草庐IT

make_binary_op

全部标签

c++ - 从 std::binary_function (或 std::unary 函数)继承有什么好处?

从std::binary_function(或std::unary_function)继承有什么好处?例如我有这样的代码:classPerson{public:Person();Person(inta,std::stringn);Person(constPerson&src);intage;std::stringname;};Person::Person():age(0),name(""){};Person::Person(inta,std::stringn):age(a),name(n){};Person::Person(constPerson&src){age=src.age;na

c++ - 错误 C2679 : binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

请不要与标题混淆,因为它已经有人问过了,但上下文不同VisualC++Compiler(VS2008)中的以下代码没有被编译,而是抛出了这个异常:std::ifstreaminput(fileName);while(input){strings;input>>s;std::cout但是这段代码在cygwing++中编译得很好。有什么想法吗? 最佳答案 您是否包含以下所有标题?我猜你忘了.附带说明:应该是std::cout和std::endl. 关于c++-错误C2679:binary'>

c++ - std::make_tuple 不做引用

我一直在尝试std::tuple结合引用文献:#include#includeintmain(){inta,b;std::tupletest(a,b);std::get(test)=1;std::get(test)=2;std::cout(test2)=-1;std::get(test2)=-2;std::cout(test3)=-1;std::get(test3)=-2;std::cout在此处的三个示例中,前两个按预期工作。然而,第三个没有。我期待auto类型(test3)与test的类型相同(即std::tuple)。看来std::make_tuple不能自动生成引用元组。为什么

c++ - boost make_shared 接受一个 const 引用。有什么办法可以解决这个问题?

我在我的程序中使用boost共享指针,并且我有一个类,它以对另一个对象的引用作为参数。我遇到的问题是make_shared函数要求所有参数都是const引用,如果我的类的构造函数不允许传入const引用参数,则会出现编译错误。有人知道这背后的原因吗?另外,有什么办法可以解决这个问题吗?给我带来问题的代码示例:classObject{public:Object(int&i){i=2;}};intmain(intargc,char*argv[]){inti=0;boost::shared_ptrobj=boost::make_shared(i);return1;}这会导致编译器错误,指出以

c++ - std::shared_ptr 初始化:make_shared<Foo>() vs shared_ptr<T>(new Foo)

这个问题在这里已经有了答案:Differenceinmake_sharedandnormalshared_ptrinC++(8个回答)关闭7年前。两者有什么区别:std::shared_ptrp=std::shared_ptr(newint);和std::shared_ptrp=std::make_shared();?我应该更喜欢哪一个?为什么?P。S.很确定这个问题一定已经回答过了,但我找不到类似的问题。 最佳答案 这两个例子都过于冗长了:std::shared_ptrp(newint);//or'=shared_ptr(newi

c++ - std::rel_ops 的惯用用法

使用std::rel_ops的首选方法是什么?要将完整的关系运算符集添加到类中?This文档建议usingnamespacestd::rel_ops,但这似乎有很大的缺陷,因为这意味着包含以这种方式实现的类的header也会将完整的关系运算符添加到所有其他具有定义operator的类中。和operator==,即使这是不希望的。这有可能以惊人的方式改变代码的含义。附带说明-我一直在使用Boost.Operators这样做,但我仍然对标准库感到好奇。 最佳答案 用户定义类的运算符重载的工作方式是通过参数相关查找。ADL允许程序和库避免

c++ - make_heap 的意义何在?

有人能告诉我像std::make_heap这样的STL堆函数模板的意义吗?为什么有人会使用它们?有实际用途吗? 最佳答案 算法和数据结构方面的类(class)会很好地回答您的直接问题。在计算机科学的算法中,堆被广泛使用。引用下面链接的make_heap函数,“堆是一棵树,其中每个节点都链接到不大于其自身值的值。”虽然堆有很多应用程序,但我最常使用的应用程序是当您想要有效地跟踪N值的排序列表时的搜索问题。当我第一次遇到STL堆函数时,我和你有类似的困惑。我的问题有点不同。我想知道“为什么STL堆与std::vector不在同一类数据结

c++ - make_shared 真的比 new 更高效吗?

我正在用C++11中的shared_ptr和make_shared进行试验,并编写了一个小玩具示例来查看调用make_shared时实际发生的情况>。作为基础架构,我使用llvm/clang3.0以及XCode4中的llvmstdc++库。classObject{public:Object(conststring&str){cout("make_shared");coutptr_res2(newObject("new"));cout现在请看一下输出:Createsmart_ptrusingmake_shared...Constructormake_sharedCopyconstruct

c++ - 为什么 Qt 使用自己的 make 工具 qmake?

我刚开始使用Qt并注意到它使用自己的制作工具qmake.为什么Qt使用自己的make工具?是否有什么特别的东西阻止它使用标准的制作工具?qmake是否调用GCCC++编译器? 最佳答案 Qt使用qmake透明地支持Qt的各种插件,包括“moc,元对象编译器”(提供信号和插槽),“uic,ui编译器”(从.ui设计器文件创建头文件),“rcc,资源编译器”(编译资源)。没有什么可以阻止您使用任何您想要的构建系统。然而,这还有很多工作要做。例如,您需要对每个包含具有信号或槽的类的头文件运行“moc”。一般不推荐,尤其是对于刚开始使用Qt

compiler-errors - Google Go 错误 - "cannot make type"

在我的Go代码中,我想创建一个自定义数据类型的数组。我打电话Blocks=make(*BlockData,len(blocks))我得到错误:cannotmaketype*BlockData我的BlockData类包含uint64、int64、float32、string、[]byte、[]string和[]*TransactionData等字段类型。最后一个是指向我的另一个自定义类的指针数组。我应该怎么做才能修复这个错误? 最佳答案 make()用于创建slice、贴图和channel。制作slice时,类型名称前面必须有[]。使