草庐IT

c++ - 如何为我自己的集合类启用大括号括起来的初始化列表?

给定这个示例类:templateclassExampleContainer{private:std::map_objects;int_sum;public:ExampleContainer():_objects(),_sum(0){}voidAdd(Tobj,intadd){_objects[obj]=add;//yesthisisbad,butit'sanexample._sum+=add;}};能够像这样使用它需要什么:ExampleContainer_rarities={{"One",600},{"Two",200},{"Three",50},{"Four",10},{"Five

c++ - 圆括号 "(*)"中的单个星号在 C++ 中有什么作用?

我找到了这样的代码:typedefstd::mapmap_type;找了一段时间,还是没搞清楚(*)运算符到底是干什么的。有人有什么想法吗? 最佳答案 此处的括号用于强加优先级。类型Example*(*)()是一个指向函数的指针,返回指向Example的指针。如果没有parent,你会拥有Example**()这将是一个返回指向Example指针的函数。 关于c++-圆括号"(*)"中的单个星号在C++中有什么作用?,我们在StackOverflow上找到一个类似的问题:

c++ - "<<"(双尖括号)在 C/C++ 枚举中是什么意思?

enumofp10_port_state{OFPPS10_STP_LISTEN=0 最佳答案 它是一个左移位运算符。这意味着它将位向左移动指定的位数:假设值为:0x0For000011110x0F在MicrosoftC++中,右移(>>)保留符号(或最重要的数字,最左边的数字)取决于数字是有符号还是无符号(假设一个字节的大小):signedinteger(anintforexample):0x80or100000000x80>>7=111111110x10or000100000x10>>4=00000001ifitsunsigned

c++ - 初始化数组时使用(或不使用)括号

在我正在阅读的C++代码中,有一些数组被初始化为int*foo=newint[length];还有一些喜欢int*foo=newint[length]();我的快速实验无法检测到这两者之间的任何区别,但它们是紧挨着彼此使用的。有区别吗?编辑;因为有人断言第一个应该给出不确定的输出,所以这里是一个显示可疑数量0的测试;[s1208067@hobgoblintestCode]$catarrayTest.cc//Testhowarrayinitilizationworks#includeusingnamespacestd;intmain(){intlength=30;//Withoutpar

c++ - 括号内的参数包扩展给出了奇怪的输出

我正在尝试实现一个函数,它接受可变数量的字符串并转发到打印函数,该函数需要一个char指针和每个字符串的size,交错.例子:std::stringa="123";std::stringb="1234";forward(a,b);//shouldcalldoPrint(a.c_str(),a.size(),b.c_str(),b.size())我认为下面应该是一个正确的实现,但即使它编译了,行为也让我感到非常惊讶。templatevoidforward(constArgs&...args){doPrint((args.c_str(),args.size())...);}forward(

java - c++ static 关键字对大括号有什么作用?

我在某处找到了这段代码,perlin噪声发生器,我认为:static{for(inti=0;i静态在那里做什么?它也在很多其他地方被发送垃圾邮件......代码实际上到处都是用静态{}构建的。我在某处丢失了原始代码,所以这是我唯一拥有的东西,但就像上面的代码一样:那里没有变量声明,这就是我不明白的原因。 最佳答案 我认为这是Java,而不是C++,这意味着它是一个staticinitializationblock. 关于java-c++static关键字对大括号有什么作用?,我们在Sta

c++ - 为什么取消引用字符串 vector 迭代器需要括号?

vectorMyStrings;vector::iteratorItStr;我正在使用c_str()返回指向字符串的指针。为什么需要用括号取消引用?不编译:*ItStr.c_str();errorC2039:'c_str':isnotamemberof'std::vector::iterator'编译/使用迭代器周围的括号:(*ItStr).c_str();如果您能给我指出正确的方向(没有双关语意),我将不胜感激。谢谢! 最佳答案 .的优先级高于一元*.*ItStr.c_str()就像您说的是*(ItStr.c_str())。当然,

c++ - 括号可以将任意标识符作为参数吗? C++

例如,是(constint)*someInt;有效代码?如果是这样,该语句是否不同于constint*someInt;? 最佳答案 您可以在表达式周围放置任意多个括号而不改变其含义。但是你不能对类型做同样的事情。特别是,正如其他人所指出的那样,代码中的括号将含义从声明更改为强制转换。 关于c++-括号可以将任意标识符作为参数吗?C++,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

c++ - 缺少带有错误大括号初始值设定项的编译器警告

更新2:正如所怀疑的那样,这与具有初始化列表构造函数无关。根据R.MartinhoFernandes的评论,很明显它只是试图构造一个对象,其自身的拷贝在使用大括号语法时未被检测到:structC{C(){}};structD{Cc0{c0};//问题依然存在。该病例的标准是否要求进行诊断?我确实意识到诊断对于所有类型的错误都是不可能或不实用的。我最终将此报告为错误57758.原始问题:我认识的某个人设法编写了错误代码(完全由错误输入引起),最终生成了虚假的bad_alloc异常。我想知道gcc(4.7.2和4.8.1)是否有充分的理由不对此发出警告。标准是否要求对这种情况进行诊断?我确

c++ - 函数调用的括号

在下面的代码片段中,如果我排除了对std::istreambuf_iterator的第二次调用周围的括号,我会在最后一行收到编译错误:leftof.c_str()musthaveaclass/struct/union.std::ifstreamfile("file.txt");;std::stringprog(std::istreambuf_iterator(file),(std::istreambuf_iterator()));prog.c_str();这些括号实际上是做什么的?在我看来,他们应该能够被排除在外。 最佳答案 如果没