stl的vector有20个元素,怎样删除8到16的元素?

ttnewday 2009-05-20 08:36:07
stl的vector有20个元素,怎样删除8到16的元素?
...全文
101 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
stephenxu111 2009-05-21
  • 打赏
  • 举报
回复
就是要特别注意单独调用erase时,it指针指向的元素和end()指向的位置都在变化,所以需要“补位”。
梧桐168 2009-05-21
  • 打赏
  • 举报
回复

template<typename T>
struct check_data
{
bool operator()(const T t) const
{
return (t > 7 && t < 20);
}
};

vector<int> data;
for (int i = 0; i < 20; i++)
{
data.push_back(i);
}
vector<int>::iterator iter = remove_if(data.begin(), data.end(), check_data<int>());
data.erase(iter, data.end());
biweilun 2009-05-20
  • 打赏
  • 举报
回复
LS正解
hurryboylqs 2009-05-20
  • 打赏
  • 举报
回复
其实你要删除的是连续元素的话,一句话就搞定了:
colls.erase(colls.begin()+8,colls.begin()+16);
bdzwj 2009-05-20
  • 打赏
  • 举报
回复
std::vector<int> colls;
for (int i = 0; i <=20; i++)
colls.push_back(i+1);

std::vector<int>::iterator it = colls.begin();
for(i = 16; i>= 8; i--)
colls.erase(it+i-1);

for(it = colls.begin(); it != colls.end(); it++)
cout << *it << endl;

hurryboylqs 2009-05-20
  • 打赏
  • 举报
回复
用迭代器和erase函数


std::vector<TCHAR> chars;
std::vector<TCHAR>::iterator it;
int i=0;
for(it=chars.begin();it!=chars.end();i++ )
{

if(i>=7)
{
if (i>16)
{
break; // 删完了,跳出循环
}
it=chars.erase(it);
}
else
{
it++;
}
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧