为什么结果是1?

0 c++ containers stdvector

#include <iostream>
#include <vector>
int main()
{
    std::vector<int> sum(1);
    sum.push_back(1);
    sum[0] = 1;
    std::cout << sum[1];
}
Run Code Online (Sandbox Code Playgroud)

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

Cor*_*mer 7

此行创建一个大小为 1 的向量,其值为 0

std::vector<int> sum(1);   // sum now contains { 0 }
Run Code Online (Sandbox Code Playgroud)

然后在你之后 push_back

sum.push_back(1);          // sum now contains { 0, 1 }
Run Code Online (Sandbox Code Playgroud)

然后你分配第一个值

sum[0] = 1;                // sum now contains { 1, 1 }
Run Code Online (Sandbox Code Playgroud)