C++ 为什么结果是1?
为什么结果是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); /
我从来没有定义过和[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 }