从std::向量中获取最后一个元素

Get the last element from a std::vector

本文关键字:最后一个 元素 获取 向量 std      更新时间:2024-09-28

在下面的例子中,我想从向量中获取一个元素。但我不理解错误:

#include <vector>
#include <memory>

using namespace std;
class Foo{
virtual int end() = 0;
};
class Bar : public Foo{
int end(){
return 0;
}
};

int main(){
vector<shared_ptr<Foo>> a;
a.push_back(make_shared<Bar>());
shared_ptr<Foo> b = a.pop_back();
}

这里的错误:

g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:21:35: error: conversion from ‘void’ to non-scalar type ‘std::shared_ptr<Foo>’ requested
21 |     shared_ptr<Foo> b = a.pop_back();
|                         ~~~~~~~~~~^~

这确实令人困惑。正如kiner_shah在评论中所说。您不想使用pop_back

int main(){
vector<shared_ptr<Foo>> a;
a.push_back(make_shared<Bar>());
shared_ptr<Foo> b = a.back();
}

pop_back方法不返回任何内容。

从std::vector中查找最后一个元素-
back((-访问最后一个元件

int main(){
vector<shared_ptr<Foo>> a;
a.push_back(make_shared<Bar>());
shared_ptr<Foo> b = a.back();}

不要使用a.popback((,它用于删除std::vector中的最后一个元素