草庐IT

C++标准

全部标签

c++ - 为什么不在带有迭代器参数的标准库函数中提供重载?

这个问题在这里已经有了答案:whynosort(v)inC++?(6个答案)关闭8年前。标准库中有很多函数的结构如下:std::foo(begin(x),end(x),bar);令我困扰的是,99%的时间里,参数都是开始和结束。为什么这些函数不都具有肯定会更频繁使用的重载,例如:std::foo(x,bar);这是语言或设计限制还是疏忽?谢谢。

C++ MPI 标准 3

MPI标准3于2011年发布没有C++绑定(bind)!我的问题是如何在没有MPI的情况下用C++编写分布式计算(注意我们还需要OpenMPCUDAOpenacc)在C++中是否有MPI的替代方案(不是MPI2.2,提升MPI)?MPI是基于TCP/IP构建的,所以我可以在C++中使用TCP/IP构建我自己的方式吗?是否有针对C++的MPI3的开源绑定(bind)?或者你必须坚持使用CGTK+CUDAOpenMPOpenGLMPI3如果你想要C++QTCUDAOpenMPOpenGL+分布式计算API怎么办?Ubuntu和许多Linux发行版试图用Wayland替换Xserver,MI

c++ - 完美转发可变参数模板到标准线程

我正在尝试制作一种std::thread形式,它在线程中执行的代码周围放置一个包装器。不幸的是,由于我对右值和Function的理解不足,我无法编译它。我试图传递的模板化类型。这是我的代码:#include#include#includevoidSimple2(inta,intb){}templatevoidWrapper(Function&&f,Args&&...a){f(std::forward(a)...);}classPool{public:templatevoidBinder(Function&&f,Args&&...a){std::threadt(Wrapper,std::

c++ - "double"的操作和 C 中的优化

我最近分析了一段用VS2005编译的旧代码,因为在“调试”(无优化)和“发布”(/O2/Oi/Ot选项)编译中存在不同的数值行为。(简化的)代码如下所示:voidf(doublex1,doubley1,doublex2,doubley2){doublea1,a2,d;a1=atan2(y1,x1);a2=atan2(y2,x2);d=a1-a2;if(d==0.0){//NOTE:Iknowthat==onrealsis"evil"!printf("EQUAL!\n");}函数f如果使用相同的值对调用(例如f(1,2,1,2)),则预计会打印“EQUAL”,但这并不总是发生在“发布”中

c++ - 标准中的哪个地方说成员别名声明可以像静态成员一样使用?

考虑以下片段:#includestructA{inti;usingInt=int;};intmain(){std::cout在clang中编译执行正常和海湾合作委员会。我知道这看起来很明显,但我在标准(C++14)中找不到任何支持在main()中引用A::Int的内容。 最佳答案 这只是您的正常限定查找。来自[basic.lookup.qual]:Thenameofaclassornamespacememberorenumeratorcanbereferredtoafterthe::scoperesolutionoperator(5

c++ - 随后迭代多个标准容器

我有以下类(class)(显然还没有按预期工作):classA{private:std::vectorfirstVector,secondVector;public:std::vector::iteratorbegin(){returnfirstVector.begin();}std::vector::iteratorend(){returnsecondVector.end();}};我如何定义一个迭代器,它随后将遍历两个成员容器,例如在返回firstVector.end()-1secondVector.begin()并一直到secondVector.end()之后?

c++ - C/C++ 下划线 t/type (_t/_type) 和类名?

我理解下划线t(_t)是用来标识类型的,下划线type(_type)也是,通常在typedef语句中.用法是否略有不同(例如,模板使用下划线类型,非模板使用下划线t)?为什么不在声明中使用它们?例如:classperson_t{};enumerror_t{};这与之前关于下划线t的问题不同,因为它还要求区分下划线类型。此外,(盲目地)很明显,这两个后缀只是约定俗成,但不清楚为什么它们都用于C++标准。例如,std::size_t与std::istream::pos_type。 最佳答案 对于您的第一个问题,我不知道有任何答案,我相信

c++ - 与 fgetc() 一起使用的整型变量

我试图理解一些基本代码,但被下面的代码弄糊涂了intmain(){FILE*fp;intc;intn=0;fp=fopen("file.txt","r");if(fp==NULL){perror("Errorinopeningfile");return(-1);}do{c=fgetc(fp);if(feof(fp)){break;}printf("%c",c);}while(1);fclose(fp);return(0);}谁能解释为什么c是整数类型,即使它是由fgetc(fp)定义的,据我所知,它只获取下一个字符? 最佳答案 鉴于

c++ - 标准 C++ 事务内存状态

C++17事务内存提议的当前状态是什么。它是否会包含在标准中,旨在包含在标准C++的某些future版本中,或者只是一个实验性的概念验证功能,其标准化状态仍未确定?我问是因为一些标准化委员会的文件似乎在这里给出了相互矛盾的信息。一方面我们有P0265R0(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0265r0.pdf)说事务内存不会被标准化,另一方面-Stroustrup(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4492.pdf)的N4492

C++ 标准 : end of lifetime

在basic.lifeC++标准的一部分,可以找到以下内容(强调我的):ThelifetimeofanobjectooftypeTendswhen:ifTisaclasstypewithanon-trivialdestructor([class.dtor]),thedestructorcallstarts,orthestoragewhichtheobjectoccupiesisreleased,orisreusedbyanobjectthatisnotnestedwithino([intro.object]).我正在尝试查找对象o的存储示例,该对象被嵌套在o中的对象重用(相反标准所说的