草庐IT

std-function

全部标签

c++ - Clang 无法识别 <algorithm> 中的 std::all_of

在我们的测试环境中编译时遇到了以下问题:尽管窗口已经在工作,但我们在Freebsd9上的构建失败并显示以下错误消息:error:nomembernamed'all_of'innamespace'std'鉴于我将-std=c++11添加到我们的Cmake标志中,我想知道为什么这不起作用。clangversion3.4(tags/RELEASE_34/final)Target:i386-portbld-freebsd9.1Threadmodel:posix函数如下#include...inlineboolis_positive_number(conststd::string&str){if

c++ - <function> 不是 <class> 的成员

我已将我的函数“Credit”声明为带有一些参数的私有(private)成员。我的观察是,每当我尝试不带任何参数进行编译时,编译器都会成功编译。但是一旦我用函数中的参数进行编译,编译器就会报错'Transaction::Credit'isnotamemberof'Transaction'这是我的代码classTransaction:publicMenu{private:voidCredit(intdepost);//{return0;}public:voidDeposit();voidWithdraw(){}voidTransfer(){}};voidTransaction::Depo

c++ - visual c++ 2013 是否有使用旧方言的选项(如 gcc 的 -std=c++98)?

我有一些代码可以在VisualC++2013中编译,但我被告知它不能在VC++2010中构建(因为它使用了微妙的c++11ism)。当然,我要做的是用两个编译器进行测试,但是......没有办法在VisualC++2013中关闭c++11并让它只接受c++08,正如我认为gcc的-std=c++98选项那样? 最佳答案 对于这种情况,唯一的方法是在项目->属性->常规中将PlatformToolset更改为VisualStudio2010(v100)。一旦你改变它,你将在VS2013下运行VC++2010编译器。

c++ - 释放存储在 std::queue 中的堆指针

考虑这段代码:classFoo;std:queueq;//allocateandaddobjectstothequeuefor(inti=0;i通过单步执行,我可以看到Foo析构函数在每个对象被删除时被调用,所以我希望进程内存使用量会随着每次删除发生而下降-但事实并非如此。在我的应用程序中,队列用于生产者/消费者线程,内存使用量一直在增长。我发现恢复内存的唯一方法是在我从队列中弹出所有项目时将队列交换为空队列:q.swap(std::queue());如果我使用vector而不是队列,删除存储的对象会立即降低进程内存使用量。任何人都可以解释为什么队列不是那样的吗?编辑以从评论中澄清:我

c++ - std::basic_fstream::put() 无效

我有以下代码:#include#includeintmain(intargc,char*argv[]){if(argc!=2){std::cout"stream;stream.open(argv[1],std::fstream::out);stream.put('T');stream.put('E');stream.put('S');stream.put('T');stream.flush();stream.close();return0;}正在创建文件,但当我在编辑器中打开它时,里面什么也没有。我的编译器是gccversion4.8.2(Ubuntu4.8.2-19ubuntu1)。

c++ - 不完整类型的 std::unique_ptr 无法编译

我将pimpl-idiom与std::unique_ptr结合使用:classwindow{window(constrectangle&rect);private:classwindow_impl;//definedelsewherestd::unique_ptrimpl_;//won'tcompile};但是,我在的第304行收到关于使用不完整类型的编译错误:Invalidapplicationof'sizeof'toanincompletetype'uixx::window::window_impl'据我所知,std::unique_ptr应该能够与不完整的类型一起使用。这是lib

c++ - 为什么 g++ 声明某些 valarray<double> o 有 "no matching function for call cbegin(o)"?

请考虑以下代码:usingcustom_t=std::valarray;custom_to;unsignedacc=std::accumulate(std::cbegin(o),std::cend(o),0);g++-5说Nomatchingfunctionforcalltocbegin(custom_t&)如果我改用std::begin(o)和std::end(o),一切正常。这是编译器错误吗?代码使用VisualStudio2015编译。 最佳答案 这是一个libstdc++错误,我刚刚创建了https://gcc.gnu.or

c++ - to_string 不是 std 的成员,g++ (mingw)

我正在制作一个小型词汇内存程序,其中会随机闪现单词以了解含义。正如BjarneStroustroup告诉我们的那样,我想使用标准C++库,但我一开始就遇到了一个看似奇怪的问题。我想将一个long整数更改为std::string以便能够将其存储在文件中。为此,我使用了to_string()。问题是,当我用g++(版本4.7.0,如其--‍version标志中所述)编译它时,它说:PSC:\Users\Anurag\SkyDrive\College\Programs>g++-std=c++0xttd.cppttd.cpp:Infunction'intmain()':ttd.cpp:11:2

c++ - 在 C++11 中将 std::vector 移动到 std::deque

如果我有std::deque和std::vector并想将它们组合成std::deque,我可以通过以下方式做到这一点:typedefintT;//typeintwillservejustforillustrationstd::dequedeq(100);//justsomerandomsizeherestd::vectorvec(50);//...doingsomefilling...//nowmovingvectortotheendofqueue:deq.insert(deq.end(),std::make_move_iterator(vec.begin()),std::make_

c# - 在 C# 中编写 C++ std::reverse 等效项的最接近方法是什么?

reverseC++标准库中的算法等同于templatevoidreverse(BidirectionalIteratorfirst,BidirectionalIteratorlast){while((first!=last)&&(first!=--last)){std::iter_swap(first,last);++first;}}根据http://www.cplusplus.com/reference/algorithm/reverse/.我想用C#编写等价物:publicvoidReverse(Tfirst,Tlast){//...}首先,你如何传入两个对IEnumerator