错误观点:通过vector::end()能获取指向最后一个元素的指针。实际上,通过上面的方法获取的是指向末尾元素再下一个位置的指针。例子:#include <iostream#include <vectorusing namespace std;int main(){vector<int Int;Intpush_back(1);Intpush_back(5);vector<int::iterator it = Intend();cout << it << endl;return 0;}程序输出的不是5,而是131159。表明通过Intend()并不能获取指向容器Int中尾元素的指针。令迭代器it = Intend() - 1即可。
pop_back () *** 作。
----------------------------------------------
#include <vector>
using namespace std;
void main(void)
{
vector<int> array;
arraypush_back(1);
arraypush_back(2);
arraypush_back(3);
arraypush_back(4);
arraypush_back(5);
vector<int>::iterator itr = arraybegin();
while (itr != arrayend)
{
if (itr == 3)arrayerase(itr);//删除值为3的元素
++itr;
}
}
//若是最后一个可用arraypop_back()
-------------------
删除所有偶数项,并打印出删除的项
1 vector/queue
正确方法1:
void erase(vector<int> &v)
{
for(vector<int>::iterator vi=vbegin();vi!=vend();)
{
if(vi % 2 == 0)
{
cout << "Erasing " << vi << endl;
vi = verase(vi);
}
else ++vi;
}
}
正确方法2:
void erase2(vector<int> &v)
{
for(vector<int>::reverse_iterator ri=vrbegin();ri!=vrend();)
{
if(ri % 2 == 0)
{
cout << "Erasing " << ri << endl;
verase((++ri)base()); //erase()函数期待的是正向iterator,故而这里要调
//用base()函数将逆向iterator转换为正向的
}
else ++ri;
}
}
以上就是关于如何利用迭代器获取vector的最后一个元素全部的内容,包括:如何利用迭代器获取vector的最后一个元素、vector 如何获取并删除一个元素、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)