在 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';
}
}
我不知道为什么我的矢量容器中会出现这些乱七八糟的数字? 这是代码:
#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';
}
}