如何利用迭代器获取vector的最后一个元素

如何利用迭代器获取vector的最后一个元素,第1张

错误观点:通过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 如何获取并删除一个元素、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9694692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存