15 什么是C ++函子及其用途? 我不断听到很多有关C ++中的函子的信息。有人可以概述一下它们是什么,在什么情况下会有用吗? 875 c++ functor function-object function-call-operator
18 为什么C ++程序员应尽量减少对“新”的使用? 我在使用std :: list <std :: string>时偶然发现了std :: string的内存溢出问题内存泄漏,其中一条评论说: 停止使用new太多。我看不到您在任何地方使用新产品的任何原因。您可以在C ++中按值创建对象,这是使用该语言的巨大优势之一。 您不必在堆上分配所有内容。 不要像Java程序员那样思考。 我不确定他的意思。 为什么要在C ++中尽可能频繁地通过值创建对象,它在内部有什么不同? 我是否误解了答案? 873 c++ memory-management heap new-operator c++-faq
8 C ++中“ struct”和“ typedef struct”之间的区别? 在C ++中,两者之间是否有任何区别: struct Foo { ... }; 和: typedef struct { ... } Foo; 834 c++ struct typedef
11 用于测试Collatz猜想的C ++代码比手写汇编要快-为什么? 我用汇编语言和C ++语言为Euler Q14项目编写了这两种解决方案。它们是用于测试Collatz猜想的相同相同的蛮力方法。组装解决方案与 nasm -felf64 p14.asm && gcc p14.o -o p14 C ++使用 g++ p14.cpp -o p14 部件, p14.asm section .data fmt db "%d", 10, 0 global main extern printf section .text main: mov rcx, 1000000 xor rdi, rdi ; max i xor rsi, rsi ; i l1: dec rcx … 832 c++ performance assembly optimization x86
30 修剪std :: string的最佳方法是什么? 我目前正在使用以下代码对std::strings程序中的所有内容进行右修剪: std::string s; s.erase(s.find_last_not_of(" \n\r\t")+1); 它可以正常工作,但我想知道是否存在某些可能会失败的最终情况? 当然,我们欢迎您提供其他优雅的解决方案以及左修剪解决方案。 812 c++ trim stdstring
4 T &&(双“&”号)在C ++ 11中是什么意思? 我一直在研究C ++ 11的一些新功能,而我注意到的一个是在声明变量(如)时使用了双“&”号T&& var。 首先,这只野兽叫什么?我希望Google允许我们搜索这样的标点符号。 这到底是什么意思? 乍一看,它似乎是一个双重引用(如C样式的双指针T** var),但是我很难考虑到这种情况的用例。 799 c++ c++11 rvalue-reference c++-faq perfect-forwarding
9 为什么要在宏中使用看似毫无意义的do-while和if-else语句? 在许多C / C ++宏中,我看到了看起来似乎毫无意义的do while循环中包裹的宏代码。这是例子。 #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } else 我看不到在do while做什么。为什么不没有它就写这个呢? #define FOO(X) f(X); g(X) 787 c++ c c-preprocessor c++-faq
25 如何将std :: string转换为小写? 我想将A转换std::string为小写。我知道该函数tolower(),但是在过去,我对该函数存在问题,无论如何它都不是理想的选择,因为与a std::string一起使用需要对每个字符进行迭代。 有没有一种替代方法可以100%地起作用? 777 c++ string c++-standard-library tolower
7 push_back和emplace_back 我对push_back和之间的区别感到困惑emplace_back。 void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); 由于有一个push_back重载引用右值引用,我不太明白它的目的是emplace_back什么? 761 c++ visual-studio-2010 stl c++11 move-semantics
2 当正好遍历8192个元素时,为什么我的程序运行缓慢? 这是有问题的程序的摘录。矩阵img[][]的大小为SIZE×SIZE,并初始化为: img[j][i] = 2 * j + i 然后,创建一个矩阵res[][],并将此处的每个字段作为img矩阵中周围9个字段的平均值。为简单起见,边框保留为0。 for(i=1;i<SIZE-1;i++) for(j=1;j<SIZE-1;j++) { res[j][i]=0; for(k=-1;k<2;k++) for(l=-1;l<2;l++) res[j][i] += img[j+l][i+k]; res[j][i] /= 9; } 这就是程序的全部内容。为了完整起见,这是之前的内容。之后没有代码。如您所见,这只是初始化。 #define SIZE 8192 float img[SIZE][SIZE]; // input image float res[SIZE][SIZE]; //result of mean filter int i,j,k,l; for(i=0;i<SIZE;i++) for(j=0;j<SIZE;j++) img[j][i] = (2*j+i)%8196; 基本上,当SIZE为2048的倍数时,该程序运行缓慢,例如执行时间: SIZE = 8191: 3.44 secs … 755 c++ performance memory-management gcc
12 std :: wstring VS std :: string 我无法理解之间的差异std::string和std::wstring。我知道wstring支持宽字符,例如Unicode字符。我有以下问题: 我什么时候应该std::wstring用完std::string? 可以std::string容纳整个ASCII字符集,包括特殊字符吗? 是std::wstring由所有流行的C ++编译器的支持? 什么是“ 宽字符 ”? 740 c++ string unicode c++-faq wstring
9 什么是“缓存友好”代码? “ 缓存不友好的代码 ”和“ 缓存友好的 ”代码之间有什么区别? 如何确定我编写的高效缓存代码? 738 c++ performance caching memory cpu-cache