• 如何在编译时测试当前版本的GCC?
    我想根据GCC的版本添加其他文件。更准确地说,我想写: #if GCC_VERSION >= 4.2 # include <unordered_map> # define EXT std #elif GCC_VERSION >= 4 # include <tr1/unordered_map> # define EXT std #else # include <ext/hash_map> # define unordered_map __gnu_cxx::hash_map # define EX...
  • 如何调用C ++静态方法
    是否可以像Java中那样从C ++中的静态方法返回对象?我正在这样做: class MyMath { public: static MyObject calcSomething(void); private: }; 我想这样做: int main() { MyObject o = MyMath.calcSomething(); // error happens here } MyMath类中只有静态方法,因此实例化它没有意义。但是我得到这个编译错误: MyMath...
  • 我使用的是copy_if吗?
    我正在使用Visual Studio 2010,并且尝试使用std :: copy_if, 我想复制所有满足谓词的值。例如: struct comp { bool operator()(const int i) { return i == 5 || i == 7; } }; int main() { array<int, 10> arr = { 3, 2, 5, 7, 3, 5, 6, 7 }; vector<int> res; copy_if(arr.begin(), ...
  • COMDAT部分用于什么?
    我看到了/ Gy选项,并且想知道为什么要使用它? http://msdn.microsoft.com/zh-CN/library/xsa71f43.aspx 最佳答案 当前接受的答案有些不完整。 COMDAT节的目的是允许在多个目标文件中定义“重复”节。通常,如果在多个目标文件中定义了相同的符号,则链接器将报告错误。这可能会导致某些C ++语言功能(例如模板)出现问题,这些功能可能会实例化不同cpp文件中的相同符号。 COMDAT部分用于解决此问题。当节在目标文件中标记为COMDAT时,它还会指定一个...
  • 忽略没有它的机器上的OpenMP
    我有一个使用OpenMP的C ++程序,它将在几台可能已安装或未安装OpenMP的计算机上运行。 How could I make my program know if a machine has no OpenMP and ignore those #include <omp.h>, OpenMP directives (like #pragma omp parallel ...) and/or library functions (like tid = omp_get_thread_num();) ? ...
  • 在地图中存储标准地图
    我必须将std :: map存储为std :: map中的值 std::map< std::string, std::map<std::string, std::string> > someStorage; 如何插入第二张(内部)地图?我尝试过: someStorage.insert( std::make_pair("key", std::make_pair("key2", "value2")) ); 但这会引发很多错误。怎么了? 最佳答案 尝试: std::map< std::string, s...
  • 如何在C ++中cin空间?
    假设我们有一个代码: int main() { char a[10]; for(int i = 0; i < 10; i++) { cin>>a[i]; if(a[i] == ' ') cout<<"It is a space!!!"<<endl; } return 0; } 如何从标准输入中删除空间符号?如果写空间,程序将忽略! :( 是否有任何符号组合(例如'\ s'或类似的东西)表示我可以在标准输入中使用“空格”作为代码?...
  • 如何使用cmake正确链接库?
    我无法使用正在使用的其他库来正确链接到我的项目中。 我正在使用CLion,后者使用cmake来构建其项目。我正在尝试将多个库与OpenGL结合使用以对某些对象进行纹理处理。我最初是在Visual Studio中构建它的,因为我永远无法弄清楚如何使cmake与Clion一起工作。但是,既然代码可以正常工作了(无论如何在Visual Studio中),我希望能够对其使用CLion,因为这是我的首选IDE。 I am still new to cmake, and I don't understand what ...
  • time_t的字符串表示形式?
    time_t seconds; time(&seconds); cout << seconds << endl; 这给了我一个时间戳。如何将那个时代日期转换为字符串? std::string s = seconds; 不起作用 最佳答案 Try std::stringstream. #include <string> #include <sstream> std::stringstream ss; ss << seconds; std::string ts = ss.str(); A nic...
  • 为什么此代码不会导致内存泄漏? [重复]
    这个问题已经在这里有了答案:                                                                                                                                                  delete []是否等于delete?                                                                      (6个答案)...
  • 使用CMake将资源(例如,着色器代码;图像)嵌入到可执行文件/库中
    我正在使用C ++编写一个应用程序,该程序依赖于项目中的各种资源。现在,我有了从生成的可执行文件到源中每个硬编码的资源的相对路径,这使我的程序可以打开文件并读取每个资源中的数据。这行得通,但是需要我从相对于资源的特定路径启动可执行文件。因此,如果我尝试从其他任何地方启动可执行文件,它将无法打开文件,因此无法继续执行。 Is there a portable way to have CMake embed my resources into the executables (or libraries) suc...
  • 将switch语句案例分组在一起?
    我可能正在寻找一些东西,但是在C ++中是否有一种简单的方法可以将案例组合在一起,而不是单独编写案例?我记得基本可以做到: SELECT CASE Answer CASE 1, 2, 3, 4 C ++中的示例(对于需要它的人): #include <iostream.h> #include <stdio.h> int main() { int Answer; cout << "How many cars do you have?"; cin >> Answer; switch (...
  • 与硬件接口的C ++构造函数是否应该真正起作用? [重复]
    这个问题已经在这里有了答案:                                                                                                                             9年前关闭。 可能重复:   构造函数应完成多少工作? 我在脑海里想着一些建议,但我不记得这些建议的原因。 我似乎记得在某个时候读过一些建议(不记得源代码),即C ++构造函数不应做真正的工作。相反,它们应仅初始化变量。该建议继续说明...
  • 使用命名空间代替C ++中的静态类?
    将名称空间用作静态类是好的还是好的做法?例如: namespace MyStaticFunctions { void doSomething(); } 与: class MyStaticFunctions { static void doSomething(); } 最佳答案 C ++中没有“静态类”这样的东西,因此从C ++的角度来看,您不是将其“用作静态类”,而是将其“用作名称空间”。使用名称空间将功能分组在一起是公认的做法。 但是,要由小组决定您的人数是多少。 C ++库在整...
公众号
关注公众号订阅更多技术干货!