Questions tagged «c++»

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



30
C ++中不区分大小写的字符串比较[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 2年前关闭。 这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 在C ++中进行不区分大小写的字符串比较而不将字符串转换为全部大写或全部小写的最佳方法是什么? 请指出这些方法是否支持Unicode,以及它们的可移植性。
373 c++  string 

5
C ++函数中静态变量的生存期是多少?
如果将变量声明为static在函数范围内,则该变量仅初始化一次,并在函数调用之间保留其值。它的寿命到底是什么?何时调用其构造函数和析构函数? void foo() { static string plonk = "When will I die?"; }
373 c++  static  lifetime 


12
如果使用的是普通键,使用地图而不使用unordered_map有什么优势吗?
最近一次有关unordered_mapC ++的讨论使我意识到,由于查找效率高(摊销O(1)与O(log n)),我应该unordered_map在map以前使用过的大多数情况下使用。大多数情况下,我使用地图,或者使用或作为密钥类型。因此,我对散列函数的定义没有任何问题。我想得越多,就越发意识到,对于简单类型的键,我找不到使用over的任何原因-我看了一下接口,却没有发现任何原因会影响我的代码的重大差异。intstd::stringstd::mapstd::unordered_map 因此,问题:是否有使用任何真正的原因std::map在std::unordered_map简单类型等的情况下int和std::string? 我是从严格的编程角度询问的-我知道它还没有完全被认为是标准的,并且可能会带来移植方面的问题。 另外,我希望正确的答案之一可能是“由于开销较小(对于较小的数据集,效率更高)”(是吗?),因此,我想将问题限制在以下情况:键是不平凡的(> 1,024)。 编辑: h,我忘了明显的东西(感谢GMan!)-是的,当然,地图是有序的-我知道,并且正在寻找其他原因。



1
C ++模板typedef
我有一堂课 template<size_t N, size_t M> class Matrix { // .... }; 我想制作一个typedef创建一个Vector(列向量),它等效于一个Matrix大小为N和1的东西。 typedef Matrix<N,1> Vector<N>; 产生编译错误。以下创建类似的东西,但不完全是我想要的东西: template <size_t N> class Vector: public Matrix<N,1> { }; 是否有解决方案或不太昂贵的解决方法/最佳实践?
368 c++  templates  c++11  typedef 


5
从函数返回unique_ptr
unique_ptr<T>不允许复制构造,而是支持移动语义。但是,我可以unique_ptr<T>从函数返回a 并将返回的值分配给变量。 #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); // 2 } int main() { unique_ptr<int> p = foo(); cout << *p << endl; return 0; } 上面的代码按预期进行编译和工作。那么,该行如何1不调用复制构造函数并导致编译器错误呢?如果我不得不使用line,2那将会很有意义(使用line 2也可以,但是我们不需要这样做)。 我知道C ++ 0x允许发生此异常,unique_ptr因为返回值是一个临时对象,一旦函数退出,该对象将被销毁,从而保证了返回指针的唯一性。我很好奇这是如何实现的,它是在编译器中进行特殊处理还是在该语言规范中使用了其他条款?
367 c++  c++11  unique-ptr 

5
用g ++编译C ++ 11
我正在尝试将我的C ++编译器更新为C ++ 11。经过一些搜索,得出的结论是我必须使用标志-std=c++0x或-std=gnu++0x,但是我对标志的了解不多。谁能帮我?(我正在使用Ubuntu 12.04。) 这是当我尝试使用C ++ 11中包含的库(即数组)时从编译器收到的错误: #include <array> #include <iostream> int main() { std::array<int, 3> arr = {2, 3, 5}; ... } 该文件需要编译器和库支持即将推出的ISO C ++标准C ++ 0x。该支持目前处于试验阶段,必须使用-std = c ++ 0x或-std = gnu ++ 0x编译器选项启用。
367 c++  c++11  g++  flags 

9
C ++字符串==和compare()之间的区别?
我刚刚阅读了有关使用的一些建议 std::string s = get_string(); std::string t = another_string(); if( !s.compare(t) ) { 代替 if( s == t ) { 我几乎总是使用最后一个,因为我已经习惯了它,而且感觉自然,可读性强。我什至不知道有一个单独的比较功能。更精确地说,我认为==会调用compare()。 有什么区别?在哪种情况下应该偏爱另一种方式? 我只考虑需要知道一个字符串是否与另一个字符串相同的情况。
363 c++  string 

8
如何将int转换为QString?
Наэтотвопросестьответына 堆栈溢出нарусском:КакпреобразоватьINTв的QString? 是否有一个QString接受int并将其输出为in的函数QString?
360 c++  qt  type-conversion 

16
使用字符串定界符(标准C ++)在C ++中解析(拆分)字符串
我正在使用以下方法在C ++中解析字符串: using namespace std; string parsed,input="text to be parsed"; stringstream input_stringstream(input); if (getline(input_stringstream,parsed,' ')) { // do some processing. } 使用单个字符定界符进行解析就可以了。但是,如果我想使用字符串作为分隔符怎么办。 示例:我想拆分: scott>=tiger 与>=作为分隔符,以便我可以得到斯科特和老虎。
360 c++  parsing  split  token  tokenize 

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.