我怎样才能在我的对象实际上是插入的位置?
#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
。
我怎样才能在我的对象实际上是插入的位置?
#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
。
如果v
是您的载体,下面会给你的位置(即指数):
v.push_back(object);
size_t pos = v.size() - 1;
或者你可以看看size()
调用之前push_back()
然后,你将不再需要减一。
您可以使用回()成员,以获得最后元素的引用:
list.push_back(object);
list.back();
或者,由于的push_back()简单地将对象添加到结束时,将新插入的元素的索引是向量尺寸减一:
list.push_back(object);
vector<my_class>::size_type object_pos = list.size() - 1;
如果你需要找到一个特定的元素后,你有他们,你不想提前节省时间指数(万一你做的东西像排序/添加/删除/等载体),你也可以使用发现算法 。
虽然NPE的正确答案显示了务实的POV,我专注于推理这个简单的答案。 可观察的行为是对的只是为目的push_back
成员函数 :
将给定元素追加值到容器的端部。
因此指数总是等于v.size()
插入之前或,等价地, v.size()-1
插入后。 如果这一说法无法得到满足时,容器的容量不能生长或类罚全中复制/移动构造函数(见异常异常的文档中)。