Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c++14中vector.reserve()的意外行为?_C++_Sorting_Stl_C++14 - Fatal编程技术网

c++14中vector.reserve()的意外行为?

c++14中vector.reserve()的意外行为?,c++,sorting,stl,c++14,C++,Sorting,Stl,C++14,我写了一段代码对整数向量进行排序,注意到一个版本工作正常,另一个版本工作不正常 版本1:使用vector.reserve 包括 使用名称空间std; int mainvoid { ios_base::将_与_stdiofalse同步; 载体a; a、 储备4; int i=0; 当我>a[i++]; } 开始,结束; 对于int i:a { couta[i++]; } 开始,结束; 对于int i:a { coutvector reserve方法不会更改向量的大小,它可能会更改分配的内存量。在第

我写了一段代码对整数向量进行排序,注意到一个版本工作正常,另一个版本工作不正常

版本1:使用vector.reserve

包括 使用名称空间std; int mainvoid { ios_base::将_与_stdiofalse同步; 载体a; a、 储备4; int i=0; 当我<4 { cin>>a[i++]; } 开始,结束; 对于int i:a { couta[i++]; } 开始,结束; 对于int i:a {
coutvector reserve方法不会更改向量的大小,它可能会更改分配的内存量。在第一个示例中,您仍然无法写入循环中的索引0到3,因为向量的大小仍然为0。您需要调整大小,这也会更改大小。

请检查以查看它真正的作用s、 看起来第1个版本调用了未定义的行为。实际上,分配内存并不需要reserve,因此您的循环访问std::vector之外的元素。旁注:注意include和namespace std;。将它们放在一起,您可以非常轻松地以非常疯狂的方式编写程序。自bolov foun以来,更方便的阅读方式d一个更好的副本:节省的时间是一个愚蠢的赌注。include包括整个标准库,并将构建时间降低近一个数量级。如果每次重建程序时都损失5-10秒,那么节省的键入时间将非常、非常快地被消耗掉。
INPUT: 1 5 3 2
OUTPUT:
INPUT: 1 5 3 2
OUTPUT: 1 2 3 5