Questions tagged «std»

C ++标准库及其名称空间。与[c ++]结合使用。

14
跟踪插入顺序的std :: map?
我目前有一个std::map<std::string,int>将整数值存储到唯一字符串标识符的,并且确实在查询该字符串。它主要执行我想要的操作,除了它不跟踪插入顺序。因此,当我迭代地图以打印出值时,它们会根据字符串进行排序;但我希望根据(第一次)插入的顺序对它们进行排序。 我考虑过使用a vector<pair<string,int>>,但是我需要查找字符串并将整数值递增约10,000,000次,因此我不知道a是否std::vector会明显变慢。 有没有一种使用方法,std::map还是有另一个std更适合我需要的容器? [我使用的是GCC 3.4,并且我的值对可能不超过50对std::map。 谢谢。

5
为什么rand()%6有偏见?
在阅读如何使用std :: rand时,我在cppreference.com上找到了此代码 int x = 7; while(x > 6) x = 1 + std::rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased 右边的表达式有什么问题?尝试了一下,它完美地工作。
109 c++  random  std 

8
C ++ 11中是否存在用于基于范围的for循环的范围类?
我发现自己是在不久前写的: template <long int T_begin, long int T_end> class range_class { public: class iterator { friend class range_class; public: long int operator *() const { return i_; } const iterator &operator ++() { ++i_; return *this; } iterator operator ++(int) { iterator copy(*this); ++i_; return copy; } bool operator ==(const …
101 c++  c++11  std 


2
防止函数使用const std :: string&接受0
值一千字: #include<string> #include<iostream> class SayWhat { public: SayWhat& operator[](const std::string& s) { std::cout<<"here\n"; // To make sure we fail on function entry std::cout<<s<<"\n"; return *this; } }; int main() { SayWhat ohNo; // ohNo[1]; // Does not compile. Logic prevails. ohNo[0]; // you didn't! this compiles. return 0; } 将数字0传递给接受字符串的方括号运算符时,编译器不会抱怨。相反,它会在输入以下方法之前编译并失败: …

3
为什么没有std :: stou?
C ++ 11添加了一些新的字符串转换功能: http://en.cppreference.com/w/cpp/string/basic_string/stoul 它包括stoi(字符串到int),stol(字符串到long),stoll(字符串到long long),stoul(字符串到unsigned long),stoull(字符串到unsigned long long)。在没有stou(字符串到无符号)的情况下值得注意。是否有某些原因是不需要的,但所有其他原因都是? 相关:C ++ 11中没有“ sto {short,unsigned short}”函数吗?
96 c++  string  c++11  std 

2
声明会影响std名称空间吗?
#include <iostream> #include <cmath> /* Intentionally incorrect abs() which seems to override std::abs() */ int abs(int a) { return a > 0? -a : a; } int main() { int a = abs(-5); int b = std::abs(-5); std::cout<< a << std::endl << b << std::endl; return 0; } 我希望输出将是-5and 5,但是输出是-5and …
96 c++  std  reserved 

6
为什么std :: initializer_list不是内置语言?
为什么没有std::initializer_list内置核心语言? 在我看来,它是C ++ 11的重要功能,但它没有自己的reserved关键字(或类似名称)。 相反,initializer_list它只是标准库中的模板类,它具有由编译器处理的新的braced-init-list语法的特殊隐式映射。 {...} 乍一看,这种解决方案是很棘手的。 现在是通过新的C ++语言实现方式吗:通过某些模板类的隐式角色而不是核心语言? 请考虑以下示例: widget<int> w = {1,2,3}; //this is how we want to use a class 为什么选择新班级: widget( std::initializer_list<T> init ) 而不是使用类似于以下任何想法的东西: widget( T[] init, int length ) // (1) widget( T... init ) // (2) widget( std::vector<T> init ) // (3) 一个经典的数组,您可能会在const这里和那里添加 …

4
如何声明std :: unique_ptr,它的用途是什么?
我尝试了解其std::unique_ptr工作原理,并为此找到了本文档。作者从以下示例开始: #include <utility> //declarations of unique_ptr using std::unique_ptr; // default construction unique_ptr<int> up; //creates an empty object // initialize with an argument unique_ptr<int> uptr (new int(3)); double *pd= new double; unique_ptr<double> uptr2 (pd); // overloaded * and -> *uptr2 = 23.5; unique_ptr<std::string> ups (new std::string("hello")); int len=ups->size(); 让我感到困惑的是 unique_ptr<int> uptr …
95 c++  pointers  std  unique-ptr 



5
如何在C ++中找到两个std :: set的交集?
我一直试图在C ++中找到两个std :: set之间的交集,但是我一直遇到错误。 我为此创建了一个小样本测试 #include <iostream> #include <vector> #include <algorithm> #include <set> using namespace std; int main() { set<int> s1; set<int> s2; s1.insert(1); s1.insert(2); s1.insert(3); s1.insert(4); s2.insert(1); s2.insert(6); s2.insert(3); s2.insert(0); set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end()); return 0; } 后面的程序不会产生任何输出,但是我希望有一个s3具有以下值的新集(我们称它为): s3 = [ 1 , 3 ] 相反,我得到了错误: test.cpp: In function ‘int main()’: test.cpp:19: …

4
cc1plus:错误:g ++无法识别的命令行选项“ -std = c ++ 11”
我正在尝试使用g++和编译-std=c++11或c++0x标志。 但是,我得到这个错误 cc1plus: error: unrecognized command line option "-std=c++11" g ++ --version g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

5
什么会“ std :;” 用C ++做?
我最近正在修改一些代码,并在函数中的一行上发现了一个预先存在的错误: std:;string x = y; 该代码仍然可以编译,并且按预期工作。 字符串定义有效,因为此文件是using namespace std;,因此std::首先不需要。 问题是,为什么要std:;编译?它在做什么(如果有的话)?
89 c++  std  colon 


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.