草庐IT

variable-initializer-list

全部标签

c++ - forward_list::splice_after( const_iterator pos, forward_list& other, const_iterator i ) 功能

我正在阅读有关此功能工作方式的不同解释。cplusplus.com说这个函数应该“直接在i之后移动元素”。然而cppreference.com表示它拼接元素ATi。MSvisualstudio同意cplusplus.com。但是,实际上正确的行为是什么?我倾向于认为“在i之后”移动更合乎逻辑(&不需要N时间来找到前面的节点)。(PS:没有forward-list标签?) 最佳答案 23.3.4.6voidsplice_after(const_iteratorposition,forward_list&x,const_iterator

c++ - 如何正确退出可能正在等待 std::condition_variable 的 std::thread?

我有一个类使用互斥锁和两个条件变量实现线程化生产者/消费者系统以进行同步。当有元素要使用时,生产者向消费者线程发出信号,而消费者在消费完元素时向生产者线程发出信号。线程继续生产和消费,直到析构函数通过设置bool变量请求它们退出。因为任何一个线程都可能在等待条件变量,所以我必须对quit变量进行第二次检查,这感觉不对而且很乱......我已将问题简化为以下(使用g++4.7在GNU/Linux上工作)示例://C++11andBoostrequired.#include//std::rand()#include#include#include#include#include#inclu

c++ - 为什么我收到错误 : initializing argument 1 of 'Item::Item(int)' [-fpermissive] in Eclipse when I try to compile my C++ code?

我是C++的新手,在盯着它看了太久之后终于放弃了尝试编译它。编译器似乎出于某种原因拒绝了头文件中的构造函数原型(prototype)......我无法弄清楚它有什么问题。项目.h:#ifndefITEM_H_#defineITEM_H_classItem{public:Item(int);//ThislineiswhatEclipsekeepsflaggingupwiththeerrorinthetitlevirtual~Item();Item*getNextPtr();intgetValue();voidsetNextPtr(Item*);};#endif/*ITEM_H_*/在我的

C++ fork()——创建 "list"进程

我有一个程序可以“一个一个”地创建新进程。是否可以更改此代码以创建一个进程“列表”——即子1是子2的父,子2是子3的父,等等?#include#include#include#include#include#include"err.h"usingnamespacestd;intmain(){pid_tpid;inti;cout 最佳答案 如果你想保持循环以便动态设置fork树的深度,//SetDEPTHtodesiredvalue#defineDEPTH4intmain(){pid_tpid;inti;cout输出Myprocess

c++ - 警告 : array 'alphabet' initialized by parenthesized string literal

在模板函数中,我目前有以下行:staticconstunsignedcharalphabet[17]=(Uppercase)?("0123456789ABCDEF"):("0123456789abcdef");其中Uppercase是模板参数。使用-pedanticgcc告诉我:warning:array'alphabet'initializedbyparenthesizedstringliteral'("0123456789abcdef")'如何摆脱该消息(我希望alphabet位于堆栈中)? 最佳答案 使代码明确有效的最简单方法

c++ - 是数组 a<T, N> = { initializer-list };正确的语法?

在工作草案中http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3225.pdf23.3.2它说Anarrayisanaggregate(8.5.1)thatcanbeinitializedwiththesyntaxarraya={initializer-list};我会通过arraya={initializer-list};是正确的,有人可以解释一下这种奇怪的语法吗? 最佳答案 草稿有误。C++11标准的最终版本有arraya如您所料。

c++ - 错误 : Use of class template requires template argument list

当我尝试运行我的程序时,此错误显示为“errorC2955:'FOURTEEN':useofclasstemplaterequirestemplateargumentlist”#includeusingnamespacestd;templateclassFOURTEEN{private:Ta[n];public:voidReadData();voidDisplayData();};voidFOURTEEN::ReadData(){for(inti=0;i>a.[i];}voidFOURTEEN::DisplayData(){for(inti=0;i>a.[i]P;//Readdatai

C++ std lib <mutex>, <conditional_variable> 库和共享内存

如果您想在共享内存中的进程之间共享互斥体,POSIX线程的CAPI需要设置一个特殊标志-请参阅sem_init()。我真的不知道差异是什么,但我在尝试在共享内存中使用C++std::condition_variable时遇到了问题——它的段错误。我在C++文档或构造函数中看不到任何提及此内容的内容。我想知道如何/是否可以在共享内存中使用C++线程互斥锁。这是我的测试代码供引用。注意squeue只是一个简单的(POD)静态大小的循环队列,省略了不相关的内容:#include#include#include/*Formodeconstants*/#include/*ForO_*consta

c++ - 警告 : non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]

这个问题在这里已经有了答案:C++ArrayInitializersWarnings(2个答案)关闭8年前。我刚刚在我的机器上安装了最新版本的cygwin和eclipseluna。它工作正常,我能够运行我的项目。但是,当我构建它们时,我收到了我不明白的警告。例如,这是我从“c++Primer”一书的网站上获得的头文件“Sales_item.h”的警告:warning:defaultedanddeletedfunctionsonlyavailablewith-std=c++11or-std=gnu++11[enabledbydefault]Sales_item()=default;^..

c++ - 将 list<A*> 转换为 list<B*> ,其中 B 继承 A

我有一个函数voiddoSomething(listlist1,listlist2)和类classB:AclassC:A有没有直接调用函数的方式voiddoSomething(listlistOfB,listlistOfC)还是我必须像手动包装它一样voiddoSomething(listlistOfB,listlistOfC){listl1;listl2;for(B*b:listOfB)l1.insert(b);for(C*c:listOfC)l2.insert(c);doSomething(l1,l2);//callingthefunctiontakingsupertype}我尝试