如何获取std::vector中最后插入元素的指针?

10

我想出了以下的代码片段,但它看起来很糟糕。

vector<int> collection;
collection.push_back(42);
int *pointer = &(*(collection.end()--));

有没有一种简单的方法来获取指向最后插入元素的指针?

1个回答

22
对于std::vectorback()返回对最后一个元素的引用,所以你需要使用&collection.back()
在C++17中,emplace_back返回对新元素的引用。您可以使用它来代替push_back
vector<int> collection;
int *pointer = &collection.emplace_back(42);

非常感谢。此外,如果向量包含std::pair,您知道如何获取指向最后一对第二个元素的指针吗? - danijar
6
&(collection.back().second) - Peter Wood
@PeterWood如果我将指针绑定到函数会产生一个坏的函数异常。这可能与指针有关,因此与问题有关吗?否则,我将提出另一个问题以避免混淆主题。 - danijar
@danijar 如果你确定括号放置正确,那么问题很可能是其他原因。新问题。 - Casey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接