草庐IT

-std=gnu99

全部标签

c++ - 为什么我不能 std::move std::unique_ptrs between std::sets?

我真的很想将一些unique_ptr从一个std::setmove到另一个:#include#include#includeintmain(){std::set>a;std::set>b;a.insert({0,std::unique_ptr(newint(42))});std::move(a.begin(),a.end(),std::inserter(b,b.end()));}但是,我在CentOS7上的GCC4.8.5显然不满意:[root@localhost~]#g++test.cpp-std=c++11-otestInfileincludedfrom/usr/include/c

c++ - 在 std::vector 中放置一个聚合

我尝试初始化std::vectorstd::vectorparticles;简单结构的实例structParticle{intid;doublex;doubley;doubletheta;doubleweight;};通过将emplace与初始化列表一起使用:num_particles=1000;for(inti=0;i但是我得到了错误C2660"std::vector>::emplace_back":Functiondoesn'tacceptoneargument我该如何解决? 最佳答案 std::vector::emplace也

c++ - std::function 的解释

std::function的目的是什么?据我所知,std::function将函数、仿函数或lambda转换为函数对象。我不太明白这样做的目的...Lambdas和Functors都已经是函数对象,我相信它们可以用作排序和转换等算法的谓词。作为旁注,Lambda实际上是仿函数(内部)。所以我唯一能看到std::function有用的是将常规函数转换为函数对象。而且我也不明白为什么要将常规函数转换为函数对象。如果我想使用一个函数对象,我会首先将一个作为仿函数或lambda...而不是编写一个函数,然后用std::function转换它,然后将它作为谓词传递...我猜std::functi

c++ - push_back 到 std::vector,复制构造函数被重复调用

这个问题在这里已经有了答案:vectorpush_backcallingcopy_constructormorethanonce?(5个答案)关闭4年前。使用is代码,我得到以下输出:A::A()iscalledtest#1A::A(constA&other)iscalledtest#2A::A(constA&other)iscalledA::A(constA&other)iscalledtest#3A::A(constA&other)iscalledA::A(constA&other)iscalledA::A(constA&other)iscalled在调试代码时,对于3个测试用例,

c++ - 通过值获取 std::queue 中元素的索引

有没有一种简单的方法可以通过C++中的值获取元素在std::queue中的位置?例如:std::queuenumbers;numbers.push(7);numners.push(4);numbers.push(11);intposition=numbers.getPosition(4);//shouldbe1 最佳答案 如果你想获得一个元素的索引,你应该考虑使用std::deque容器而不是std::queue容器适配器,正如thisotheranswer中已经建议的那样.如果你还想坚持std::queue由于某些其他原因,容器适

c++ - 如何获取 std::map 的前 n 个元素

由于C++std::map中没有.resize()成员函数,我想知道如何获得最多包含n个元素的std::map。显而易见的解决方案是创建一个从0到n的循环,并使用第n个迭代器作为std::erase()的第一个参数。我想知道是否有任何解决方案不需要循环(至少在我的用户代码中不需要)并且更像是“STL方式”。 最佳答案 您可以为此使用std::advance(iter,numberofsteps)。 关于c++-如何获取std::map的前n个元素,我们在StackOverflow上找到一

c++ - 结合 boost::lexical_cast 和 std::transform

我想写这样的东西,不能编译:std::vectoras;std::vectorbs(as.size());std::transform(as.beginn(),as.end(),bs.begin(),boost::lexical_cast);但这行不通,所以我创建了一个仿函数来为我做这件事:templatestructlexical_transform{templateDestoperator()(constSrc&src)const{returnboost::lexical_cast(src);}};有更简单的方法吗? 最佳答案

c++ - 如何实现 std::auto_ptr 是复制构造函数?

回到我的疯狂AutoArraythingy...(从那里引用重要的部分:classAutoArray{void*buffer;public://CreatesanewemptyAutoArrayAutoArray();//std::auto_ptrcopysemanticsAutoArray(AutoArray&);//Noteitcan'tbeconstbecausethe"other"reference//isnull'doncopy...AutoArray&operator=(AutoArray);~AutoArray();//Nothrowswap//Note:Atthemom

c++ - 'powf' 不是 'std' 的成员

我在使用XCode编译库时遇到错误:'powf'isnotamemberof'std'包括在内。谁能给我解释一下哪里出了问题? 最佳答案 直到C++11,powf只是一个Microsoft-ism.它根本没有出现在ISO标准中,因此不太可能出现在XCode中,除非他们要适应Microsoft的怪异做法,我认为这不太可能。另一方面,pow成为C++库的一部分的时间更长,因为它在C库的早期迭代中并入了C++pre-11。改用它。自C++11起,powf确实出现在ISO标准中并且是std命名空间的一部分。尽管如此,还是有一些不兼容的实现,

c++ - std::unique_ptr 编译器错误:派生类的成员无法访问基类的私有(private)成员

我得到CompilerErrorC2248当我尝试编译以下代码时:#include#includeusingnamespacestd;classdata{public:staticdataparse(){datad;data::parse(d);returnd;}list>l;private:staticvoidparse(data&node){}};intmain(){return0;}为什么?我该如何解决这个问题?注意:我使用std::shared_ptr而不是std::unique_ptr没有问题。 最佳答案 您需要为您的类型