如果在使用迭代器的循环过程中实现vector元素个数的增长?该怎么处理
如果在使用迭代器的循环过程中实现vector元素个数的增长?
我以前写过一个在循环过程中实现vector元素个数增长的程序:
int main()
{
vector<int> myVector(1);
vector<int>::size_type i = 0;
for(; i != myVector.size() ;)
{
myVector.push_back(0);
if(i == myVector.size())
{
myVector.push_back(0);
}
i++;
if(i == 10)
break;
}
cout<<"容量为"<<myVector.size()<<endl;
for(vector<int>::size_type ix = 0;ix != myVector.size();++ix)
{
cout<<myVector[ix]<<endl;
}
return 0;
}
程序可以实现动态增长的功能;但用的是vector的下标实现的。我想用一个list实现类似的功能,可是list不支持下标操作,只能用用迭代器实现,不知该怎么做啊?我自己想了一段程序,但是有问题,希望大家看看该怎么改:
int main()
{
vector<int> hour;
hour.push_back(100);
for(vector<int>::iterator it = hour.begin();it != hour.end();)
{
if(it == hour.end()-1)
{
hour.push_back(100);
}
//下面一句出了错误
it++;
if(hour.size() == 10)
break;
}
return 0;
}
------解决方案--------------------
hour.push_back(100);之后
it已经失效
要重新赋值:
it = hour.end()-1;
------解决方案--------------------
int main()
{
vector<int> hour;
hour.push_back(100);
for(vector<int>::iterator it = hour.begin();it != hour.end();)
{
if(it == hour.end()-1)
{
hour.push_back(100);
it=hour.end()-2;
}
//添加元素,迭代器可能失效。
it++;
if(hour.size() == 10)
break;
}
return 0;
}
我以前写过一个在循环过程中实现vector元素个数增长的程序:
int main()
{
vector<int> myVector(1);
vector<int>::size_type i = 0;
for(; i != myVector.size() ;)
{
myVector.push_back(0);
if(i == myVector.size())
{
myVector.push_back(0);
}
i++;
if(i == 10)
break;
}
cout<<"容量为"<<myVector.size()<<endl;
for(vector<int>::size_type ix = 0;ix != myVector.size();++ix)
{
cout<<myVector[ix]<<endl;
}
return 0;
}
程序可以实现动态增长的功能;但用的是vector的下标实现的。我想用一个list实现类似的功能,可是list不支持下标操作,只能用用迭代器实现,不知该怎么做啊?我自己想了一段程序,但是有问题,希望大家看看该怎么改:
int main()
{
vector<int> hour;
hour.push_back(100);
for(vector<int>::iterator it = hour.begin();it != hour.end();)
{
if(it == hour.end()-1)
{
hour.push_back(100);
}
//下面一句出了错误
it++;
if(hour.size() == 10)
break;
}
return 0;
}
------解决方案--------------------
hour.push_back(100);之后
it已经失效
要重新赋值:
it = hour.end()-1;
------解决方案--------------------
int main()
{
vector<int> hour;
hour.push_back(100);
for(vector<int>::iterator it = hour.begin();it != hour.end();)
{
if(it == hour.end()-1)
{
hour.push_back(100);
it=hour.end()-2;
}
//添加元素,迭代器可能失效。
it++;
if(hour.size() == 10)
break;
}
return 0;
}