草庐IT

non-main

全部标签

c++ - 在 C++ 中的 main() 之前初始化 vector

我希望能够在main之前初始化大小为“SIZE”的vector。通常我会做staticvectormyVector(4,100);intmain(){//HereIhaveavectorofsize4withalltheentriesequalto100}但问题是我想将vector的第一项初始化为某个值,将另一个初始化为另一个值。有没有简单的方法来做到这一点? 最佳答案 试试这个:staticintinit[]={1,2,3};staticvectorvi(init,init+sizeofinit/sizeofinit[0]);另请

c++ - main() 之前的堆栈溢出异常

这是我在stackoverflow上的第一个问题,所以我会尽量具体一点。我在论坛上搜索了任何相关主题,但没有成功。不管怎样,这里是:我正在使用VisualStudio2005。我遇到了堆栈溢出异常:IHR.exe中0x775715de处未处理的异常:0xC00000FD:堆栈溢出。,在尝试调试我的项目时。调用堆栈没有帮助,因为它在ntdll.dll处停止,甚至在进入main()函数之前。起初我怀疑这可能是编译设置的问题,但是当我将在我的计算机上编译的可执行文件发送到第二台计算机时,它可以正常运行,只是不会在我的机器上运行。同样的情况反过来发生,我在第二台计算机上编译了可执行文件,它可以

c++ - 为什么这个简单的 lambda 在 std::thread 中始终比在 gcc 4.9.2 的 main 函数中运行得更快?

以下代码片段采用一个命令行参数,该参数表示要生成的线程数以同时运行一个简单的for循环。如果传递的参数为0,则不会生成std::thread。在gcc4.9.2上,./snippet0比./snippet1平均花费10%,即生成一个std的版本::thread执行循环比仅在main中执行循环的版本更快。有人知道这是怎么回事吗?clang-4根本没有表现出这种行为(带有一个std::thread的版本较慢),gcc6.2具有带有一个std::thread的版本运行得稍微慢一点更快(以十次试验中花费的最少时间作为测量值)。这是片段:ScopedNanoTimer只是一个简单的RAII计时器

c++ - (Re)Using std::algorithms with non-standard containers

我有一个“列”容器类型:structMyColumnType{//Data:Eachrowrepresentsamemberofanobject.vectora;//Allvectorsareguaranteedtohavealwaysvectorb;//thesamelength.vectorc;voidcopy(intfrom_pos,intto_pos);//Thecolumntypeprovidesaninterfacevoidswap(intpos_a,intpos_b);//forcopying,swapping,...voidpush_back();//Andforres

c++ - 全局变量的静态初始化是否在 `main()`之前完成?

C++标准1998的一些相关摘录:Thestorageforobjectswithstaticstoragedurationshallbezero-initializedbeforeanyotherinitializationtakesplace.Zero-initializationandinitializationwithconstantexpressionarecollectivelycalledstaticinitialization;allotherinitializationisdynamicinitialization.ObjectsofPODtypeswithstati

c++ - MSVC : modifiers not allowed on non-memberfunction

我在linux下编写了一个信号/插槽库(Codeprojectarticlehere),同时使用Clang3.5和GCC4.9进行编译。它在两个编译器上编译时都没有警告(也在3.4版和4.8版上)。当我完成所有工作并将文章发布到网上时,没过多久我就收到投诉说它不能在MSVC上工作。(VisualStudioExpress2013?对不起,我对版本控制系统不熟悉。)我把它安装在虚拟机中自己看了一下,发现它不会编译以下内容:templatestructRemoveCV;templatestructRemoveCV{usingType=R(Args...);};templatestructR

c++ - 在 main() 之外处理 argc 和 argv

如果我想将用于处理命令行参数的大部分代码保留在main之外(为了组织和更易读的代码),最好的方法是什么?voidmain(intargc,char*argv[]){//lotsofcodehereIwouldliketomoveelsewhere} 最佳答案 要么将它们作为参数传递,要么将它们存储在全局变量中。只要您不从main返回并尝试在atexit处理程序或全局范围内的对象的析构函数中处理它们,它们仍然存在并且可以从任何范围访问。例如://Passingthemasargs:voidprocess_command_line(in

c++ - libc++ 与 VC++ : Can non-UTF conversions be done with wstring_convert?

C++11的std::wstring_convert效果很好*用于标准UTF-8UTF-16/UCS2/UCS4转换。但是,当我尝试使用不是来自的构面实例化wstring_convert或wbuffer_convert时,它没有按预期工作://worksasexpectedstd::wstring_convert>ucs4conv;//Now,byanalogy,Iwanttotrythis:std::wstring_convert>gbconv(newstd::codecvt_byname("zh_CN.gb18030"));Clang++错误提示“在~wstring_convert

Exception in thread “main“ java.lang.NoClassDefFoundError

项目场景:验证继承情况下子类创建对象时,先调用父类的构造方法,再调用子类的构造方法问题描述随机(不同次数的测试下)会产生Exceptioninthread"main"java.lang.NoClassDefFoundError错误packageeverydayhomework;publicclassDay09{publicDay09(){System.out.println("父类的");}publicstaticvoidmain(String[]args){DAY03day=newDAY03();}}classDAY03extendsDay09{publicDAY03(){System.ou

c++ - 隐式转换 : const reference vs non-const reference vs non-reference

考虑这段代码,structA{};structB{B(constA&){}};voidf(B){cout这compilesfine,运行良好。但是,如果我将f(B)更改为f(B&),它doesn'tcompile.如果我写f(constB&),它又是compilesfine,运行良好。原因和道理是什么?总结:voidf(B);//okayvoidf(B&);//errorvoidf(constB&);//okay对于每种情况,我想听听语言规范中的原因、基本原理和引用资料。当然,函数签名本身并没有错。A隐式转换为B和constB&,但不会转换为B&,这会导致编译错误。