获取对象的索引插入到载体(Get index of object inserted into a v

2019-08-04 03:23发布

我怎样才能在我的对象实际上是插入的位置?

#include <vector>
using namespace std;

vector<SomeClass> list;
SomeClass object;
list.push_back(object);

list[...].method(); // I do not have the key

不幸push_back ,因为它的返回类型是不返回任何内容void

Answer 1:

如果v是您的载体,下面会给你的位置(即指数):

v.push_back(object);
size_t pos = v.size() - 1;

或者你可以看看size()调用之前push_back() 然后,你将不再需要减一。



Answer 2:

您可以使用回()成员,以获得最后元素的引用:

list.push_back(object);
list.back();

或者,由于的push_back()简单地将对象添加到结束时,将新插入的元素的索引是向量尺寸减一:

list.push_back(object);
vector<my_class>::size_type object_pos = list.size() - 1;


Answer 3:

如果你需要找到一个特定的元素后,你有他们,你不想提前节省时间指数(万一你做的东西像排序/添加/删除/等载体),你也可以使用发现算法 。



Answer 4:

虽然NPE的正确答案显示了务实的POV,我专注于推理这个简单的答案。 可观察的行为是对的只是为目的push_back成员函数 :

将给定元素追加值到容器的端部。

因此指数总是等于v.size()插入之前或,等价地, v.size()-1插入后。 如果这一说法无法得到满足时,容器的容量不能生长或类罚全中复制/移动构造函数(见异常异常的文档中)。



文章来源: Get index of object inserted into a vector
标签: c++ stl vector std