在 rubish number 中插入函数结果

insert function result in rubish number

我不知道为什么我的矢量容器中会出现这些乱七八糟的数字? 这是代码:

#include <iostream>
#include <vector>

int main()
{
 std::vector<int> ivec = {2,3,5,7};
 std::vector<int>::iterator it = ivec.begin();
 std::vector<int>::iterator pos = ivec.begin()+1;
 ivec.insert(pos,444);
 while(it != ivec.begin())   
{
 std::cout << *it << std::endl;
 it++;
} 
 return 0;
}

结果如下: 0 0 370638864 22056 0 0 49 0 2个 444 3个 5个 7

当你 insert 一个容器中的值(在这种情况下是 vector )你可以使你当前拥有的任何 iterator 无效,如果 vector需要调整大小。如果 vector 没有调整大小,只有 iterator 在插入之前保持有效。过去的结束迭代器也失效了。

另外,你的 while 循环条件应该是 it != ivec.end( ).

话虽这么说,让您的生活更轻松,只需使用基于范围的 for 循环。

int main( ) {
    std::vector vec{ 2, 3, 5, 7 };
    vec.insert( vec.begin( ) + 1, 444 );
   
    for ( auto value : vec ) {
        std::cout << value << '\n';
    }

    // If you really want to use iterators you can do this.
    // Do this after the insertion into the vector.
    for ( auto it{ vec.begin( )}; it != vec.end( ); ++it ) {
        std::cout << *it << '\n';
    }
}