草庐IT

应不应该

全部标签

c++ - 我们什么时候应该使用圆括号 ( ) 与 initializer { } 语法来初始化 C++11 中的对象?

这个问题在这里已经有了答案:Whentousethebrace-enclosedinitializer?(3个答案)关闭6年前。已更新我已经通过链接(例如Whentousethebrace-enclosedinitializer?)了解何时应该使用{}大括号初始化,但没有给出何时应该使用括号()的信息与初始值设定项{}在C++11/14中初始化对象的语法?建议使用哪些标准做法()在{}?在极少数情况下,例如vectorv(10,20);或autov=vector(10,20);,结果是std::vector有10个元素。如果我们使用大括号,结果是std::vector有2个元素。但这取

c++ - 我应该将 "using namespace"放在 C++ 中的命名空间内部还是外部

我的导师在代码审查中这样修改了我的代码:usingnamespaceA;//definedinotherfilesnamespaceB{//dosomething}而不是像这样:namespaceB{usingnamespaceA;//dosomething}将using命名空间放在命名空间之外是否有任何技术原因? 最佳答案 在头文件中,您不应该在全局范围内使用usingnamespaceN;指令。它将在所有客户端代码上强制使用来自N的大量标识符。但是将它放在命名空间X中也可以。请记住,执行usingnamespaceX;的客户端代

c# - 在从 C++ 转换为 C# 的代码中,我应该使用什么来代替 memcpy?

有问题的行在这里:memcpy(v[0],b_y1[0],160U*sizeof(double));其中v和b_y1区域双数组(double[])。这条线到底在做什么?它是通过将MatLab转换为C++到C#生成的。如果需要,我可以提供下面的完整功能。 最佳答案 有很多方法可以做到这一点。如果您选择并使用memcpy,请导入DLL。但是你也可以使用:Buffer.BlockCopyCopiesaspecifiednumberofbytesfromasourcearraystartingataparticularoffsettoade

c++ - 什么时候不应该将我的代码拆分为头文件和源文件?

我知道这可能很主观,但是在不需要将代码拆分为两个文件的情况下是否有任何通用规则?例如类是否非常小,或者文件是否只包含一些全局定义或静态函数?另外,在这些情况下,单个文件应该是.cpp文件还是.h文件? 最佳答案 在技术方面,每当您需要遵守一个定义规则时,您必须将声明与定义分开,因为您需要在多个翻译单元中多次包含声明,但您必须只提供一个定义。从美学角度来说,答案可能是“总是”或“系统地”。在任何情况下,您都应该为每个逻辑代码单元(例如,一个类或一个函数集合)都有一个标题;source文件可能是可选的,这取决于您是否已内联定义所有内容(

我应该从哪里安装git:xcode-select-安装或酿造git?

我应该从哪里安装git:xcode-select--install或者brewinstallgit?看答案你需要做xcode-select--install无论如何,如果您想做任何开发。然后你可以做brewinstallgit它将安装git进入/usr/local/bin/git不影响AppleXcodegit。不会有两个git版本跑步,但是会有两个安装。输入时哪一个运行git将取决于您的道路。总的来说,你想要/usr/local/bin首先在您的道路上,因此您从提供的新包装中受益自制而不是过时的版本苹果供应。

c++ - std::function 赋值应该忽略返回类型吗?

这个问题在这里已经有了答案:Using`std::function`tocallnon-voidfunction(3个答案)关闭8年前。根据C++11或C++14标准,下面的代码是否有效?#includeintReturnInt(){return5;}intmain(intargc,char**argv){std::functionBoundType=ReturnInt;return0;}代码可以使用最新的cygwin版本的gcc(4.8.3)和clang(4.3.2)正常编译,但不能使用VisualStudio2013、VisualStudio2013年11月CTP或VisualSt

c++ - 为什么我应该在使用命名空间 std 之后包含头文件 <iostream>?

既然命名空间std已经有了包含函数定义的C++库(如果我是对的),那我们为什么还要在它上面包含头文件??。由于命名空间std包含C++标准库,我看不出有理由单独包含它的声明。 最佳答案 当你做#include它会导致一组类和其他内容包含在您的源文件中。对于iostream和大多数标准库头文件,它们将这些东西放在名为std的命名空间中。.所以#include的代码看起来像这样:namespacestd{classcin{...};classcout{...};classcerr{...};classclog{...};...}所以此时

c++ - 我应该将父指针存储在树/图节点中吗?

我正在开发类似树/图的数据结构。它应该更像是一个有向无环图。其中一个要求是找到从根到特定节点的路径,这意味着当用户选择一个节点时,从根开始的路径将被突出显示。所以,问题是我应该在每个节点中存储一个父指针吗?或者一个更普遍的问题是我什么时候应该在每个节点中存储一个父指针?有什么优点和缺点?提前致谢!附言。parentpointer==指向父节点的指针。 最佳答案 通常,只有当您要使用需要它的算法时,您才将指针存储回父级。否则,无论是在用于存储指针的内存方面,还是在插入节点或重新平衡/重组树时更新这些指针的额外复杂性方面,都是不必要的开

c++ - 是否应该使用范围 for 循环而不是 vector 上的迭代器?

给定一个vector,vc,可以迭代具有范围的vector:for(autoc:vc)std::cout或者使用迭代器:for(autoit=vc.cbegin();it!=vc.cend();++it)std::cout是否有使用一种方法而不是另一种方法的功能原因,或者这仅仅是风格问题? 最佳答案 从性能的角度来看,并没有真正的区别。正如BjarneStroustrup在他的《C++编程语言第4版》一书中所写:Thesimplestloopisarange-for-statement;itsimplygivestheprogram

c++ - 我们应该删除一个不是 new/malloc 的指针吗?

classClassA{public:ClassA(ClassB*p)b(p){}~ClassA(){deleteb;}ClassB*b;};这样的设计好吗? 最佳答案 答案是视情况而定。您必须明确谁负责对象的生命周期。此外,ClassA缺少用户定义的复制构造函数和赋值运算符,这可能会导致未定义的行为。例如:ClassAobject1(newClassB());//object1takesownershipoftheobjectClassAobject2(object1);//object2takesownershipofthesa