C++ vector要怎麼删除其中一个元素
for(i=0;i<(vertical_num*4);i+=4){for(j=(i+4);j<(vertical_num*4);j+=4){if(vertical[i]=...
for(i = 0; i < (vertical_num*4); i+=4)
{
for(j = (i+4); j < (vertical_num*4); j+=4)
{
if(vertical[i] == vertical[j] && vertical[i+1] == vertical[j+1])
{
vertical.erase(&vertical[j]);
vertical.erase(&vertical[j+1]);
vertical.erase(&vertical[j+2]);
vertical.erase(&vertical[j+3]);
vertical_num--;
}
else
break;
}
}
问题:if内的erase一直是错误的,请问我这样要如何删除
请问一定要透过vector<int>::iterator iter = vertical.begin(); vertical.erase(iter); 才行吗??不能直接写? 展开
{
for(j = (i+4); j < (vertical_num*4); j+=4)
{
if(vertical[i] == vertical[j] && vertical[i+1] == vertical[j+1])
{
vertical.erase(&vertical[j]);
vertical.erase(&vertical[j+1]);
vertical.erase(&vertical[j+2]);
vertical.erase(&vertical[j+3]);
vertical_num--;
}
else
break;
}
}
问题:if内的erase一直是错误的,请问我这样要如何删除
请问一定要透过vector<int>::iterator iter = vertical.begin(); vertical.erase(iter); 才行吗??不能直接写? 展开
展开全部
#include <vector>
using namespace std;
void main(void)
{
vector<int> array;
array.push_back(1);
array.push_back(2);
array.push_back(3);
array.push_back(4);
array.push_back(5);
vector<int>::iterator itr = array.begin();
while (itr != array.end)
{
if (*itr == 3)array.erase(itr);//删除值为3的元素
++itr;
}
}
//若是最后一个可用array.pop_back()
展开全部
vector<int>::iterator iter = vertical.begin();
while(iter != vertical.end() && *iter != 10) //删除元素值为10的元素
{
iter++;
}
if (iter != vertical.end())
vertical.erase(iter);
while(iter != vertical.end() && *iter != 10) //删除元素值为10的元素
{
iter++;
}
if (iter != vertical.end())
vertical.erase(iter);
追问
请问有没有别的方法
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(i = 0; i < (vertical_num*4); i+=4)
{
for(j = (i+4); j < (vertical_num*4); )
{
if(vertical[i] == vertical[j] && vertical[i+1] == vertical[j+1])
{
vertical.erase(&vertical[j]);
vertical.erase(&vertical[j+1]);
vertical.erase(&vertical[j+2]);
vertical.erase(&vertical[j+3]);
vertical_num--;
}
else
j+=4; //试试
}
}
{
for(j = (i+4); j < (vertical_num*4); )
{
if(vertical[i] == vertical[j] && vertical[i+1] == vertical[j+1])
{
vertical.erase(&vertical[j]);
vertical.erase(&vertical[j+1]);
vertical.erase(&vertical[j+2]);
vertical.erase(&vertical[j+3]);
vertical_num--;
}
else
j+=4; //试试
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询