Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。


21
从C ++函数返回多个值
有没有从C ++函数返回多个值的首选方法?例如,假设有一个函数将两个整数相除,然后返回商和余数。我通常看到的一种方法是使用参考参数: void divide(int dividend, int divisor, int& quotient, int& remainder); 一种变化是返回一个值,并将另一个值通过参考参数传递: int divide(int dividend, int divisor, int& remainder); 另一种方法是声明一个包含所有结果的结构并返回: struct divide_result { int quotient; int remainder; }; divide_result divide(int dividend, int divisor); 是通常首选这些方法之一,还是有其他建议? 编辑:在实际代码中,可能会有两个以上的结果。它们也可能是不同的类型。
242 c++ 

5
如何使用CMake正确添加包含目录
大约一年前,我询问了CMake中的标头依赖性。 最近我意识到问题似乎是CMake认为这些头文件在项目外部。至少在生成Code :: Blocks项目时,头文件不会出现在项目中(源文件会出现)。因此,在我看来,CMake认为这些标头在项目外部,而不在依赖中跟踪它们。 在CMake教程中快速搜索仅指出了include_directories哪些似乎并没有达到我的期望... 向CMake发出信号的正确方法是什么,即特定目录包含要包含的标头,并且应由生成的Makefile跟踪这些标头?
242 c++  ubuntu  cmake 

6
为什么使用未命名的命名空间,它们有什么好处?
我刚刚加入了一个新的C ++软件项目,并且试图了解其设计。该项目频繁使用未命名的名称空间。例如,在类定义文件中可能会出现这样的情况: // newusertype.cc namespace { const int SIZE_OF_ARRAY_X; const int SIZE_OF_ARRAY_Y; bool getState(userType*,otherUserType*); } newusertype::newusertype(...) {... 有哪些设计考虑因素可能会导致使用未命名的命名空间?优点和缺点是什么?
242 c++  oop  namespaces 

21
如何检查C ++ std :: string是否以某个特定字符串开头,并将子字符串转换为int?
如何在C ++中实现以下(Python伪代码)? if argv[1].startswith('--foo='): foo_value = int(argv[1][len('--foo='):]) (例如,如果argv[1]is --foo=98,则foo_valueis 98。) 更新:我不愿讨论Boost,因为我只是想对一个简单的小型命令行工具进行很小的更改(我宁愿不必学习如何链接和使用Boost来进行较小的调整更改)。

4
(-2147483648> 0)在C ++中返回true吗?
-2147483648是32位整数类型的最小整数,但似乎会在if(...)句子中溢出: if (-2147483648 > 0) std::cout << "true"; else std::cout << "false"; 这将true在我的测试中打印。但是,如果将-2147483648强制转换为整数,结果将有所不同: if (int(-2147483648) > 0) std::cout << "true"; else std::cout << "false"; 这将打印false。 我很困惑。谁能解释一下? 更新02-05-2012: 感谢您的评论,在我的编译器中,int的大小为4个字节。我正在使用VC进行一些简单的测试。我已经更改了问题的描述。 这在这篇文章中得到了很多很好的答复,AndreyT给出了关于编译器将如何对此类输入进行操作以及如何实现此最小整数的非常详细的解释。另一方面,qPCR4vir提供了一些相关的“好奇心”以及如何表示整数。好厉害!



12
用C ++快速编写二进制文件
我试图将大量数据写入我的SSD(固态驱动器)。大量是指80GB。 我浏览了网络以寻找解决方案,但是我想到的最好的方法是: #include <fstream> const unsigned long long size = 64ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { std::fstream myfile; myfile = std::fstream("file.binary", std::ios::out | std::ios::binary); //Here would be some error handling for(int i = 0; i < 32; ++i){ //Some calculations to fill a[] myfile.write((char*)&a,size*sizeof(unsigned long long)); } myfile.close(); …

10
如何总结C ++向量的元素?
找到元素中所有元素之和的好方法是什么std::vector什么? 假设我有一个std::vector<int> vector包含几个元素的向量。现在,我想找到所有元素的总和。相同的不同方式有哪些?
240 c++  stl  vector 



6
如何正确实现自定义迭代器和const_iterators?
我有一个自定义容器类,我想为其编写iterator和const_iterator类。 我以前从未做过,但是找不到合适的方法。关于迭代器创建的准则是什么,我应该注意什么? 我还想避免代码重复(我感觉到const_iterator并iterator共享许多东西;一个应该继承另一个吗?)。 脚注:我很确定Boost可以缓解此问题,但是由于许多愚蠢的原因,我不能在这里使用它。

12
您可以在遍历std :: list的同时删除其中的元素吗?
我有看起来像这样的代码: for (std::list<item*>::iterator i=items.begin();i!=items.end();i++) { bool isActive = (*i)->update(); //if (!isActive) // items.remove(*i); //else other_code_involving(*i); } items.remove_if(CheckItemNotActive); 我想在更新不活动的项目后立即将其删除,以避免再次浏览列表。但是,如果添加注释行,则出现以下错误i++:“列表迭代器不可递增”。我尝试了一些替代方法,这些替代方法在for语句中没有增加,但是我什么也无法工作。 走std :: list时删除项目的最佳方法是什么?
239 c++  list  std 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.