首页 > 解决方案 > 为什么 push_back 函数不将值插入到具有定义大小的向量中

问题描述

我刚开始学习C++。所以,我无法弄清楚为什么向量成员函数不会将值插入向量中。

int main (){

    vector<char> v(5);
    char x = 'a';
    for (int i = 0; i < v.size(); ++i) {
        v.push_back(x);
        ++x;
    }
    for (int i = 0; i < v.size(); ++i)
        cout << v[i];

    keep_window_open();
    return 0;
}

标签: c++

解决方案


我无法弄清楚为什么向量成员函数不会将值插入向量

它确实在事实中插入了值。执行,只是没有达到vector内容的打印,因为循环:

for (int i = 0; i < v.size(); ++i) {
    v.push_back(x);
    ++x;
}

是无限的。

在第一次迭代v.size()返回之前5(因为这是元素的数量,所以向量是用构造的),因此i < v.size()在第一次迭代期间计算为0 < 5.

然后循环通过将元素插入向量(在过程中增加v.size()by 1)并增加iby 来完成它的工作1。因此,第二次迭代期间的比较结果为1 < 6

然后,它以类似的方式继续向无穷大(或直到你杀死它)。


推荐阅读