Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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++ 为什么结果是1?_C++_Containers_Stdvector - Fatal编程技术网

C++ 为什么结果是1?

C++ 为什么结果是1?,c++,containers,stdvector,C++,Containers,Stdvector,为什么结果是1? 我从来没有定义过和[0]。这行创建了一个大小为1、值为零的向量 #include <iostream> #include <vector> int main() { std::vector<int> sum(1); sum.push_back(1); sum[0] = 1; std::cout << sum[1]; } 然后在第一个值上赋值 sum.push_back(1); /

为什么结果是1?
我从来没有定义过和[0]。

这行创建了一个大小为1、值为零的向量

#include <iostream>
#include <vector>
int main()
{
    std::vector<int> sum(1);
    sum.push_back(1);
    sum[0] = 1;
    std::cout << sum[1];
}
然后在第一个值上赋值

sum.push_back(1);          // sum now contains { 0, 1 }

为什么结果是1?我从未定义过sum[0]。std::载体sum1;在索引0处创建一个具有单个默认构造元素的向量。如果没有添加足够的成员,sum[0]和sum[1]将是非法的数组访问,这会导致未定义的行为。尝试找出值的来源时的提示:在不同的位置使用不同的值。在问题中的代码中,sum.push_back1和sum[0]=1;`两人都把1放在某个地方。如果其中一个加上2,可能会更清楚1或2是从哪里来的。
sum.push_back(1);          // sum now contains { 0, 1 }
sum[0] = 1;                // sum now contains { 1, 1 }