“指向最后一个元素的指针”的更漂亮的语法,std :: vector?

时间:2010-09-06 13:31:40

标签: c++ stl vector stdvector

我想知道是否有更漂亮的语法来获得C ++向量中最后一个元素的普通指针(不是迭代器)

std::vector<int> vec;

int* ptrToLastOne = &(*(vec.end() - 1)) ;

// the other way I could see was
int* ptrToLastOne2 = &vec[ vec.size()-1 ] ;

但这些都不是很好看!

4 个答案:

答案 0 :(得分:34)

int* ptrToLastOne = &vec.back(); // precondition: !vec.empty()

答案 1 :(得分:6)

int* ptrToLast = &(vec.back()); // Assuming the vector is not empty.

答案 2 :(得分:4)

更多选择:

int* ptrToLast = &*vec.rbegin();

int* ptrToLast = &*boost::prev(vec.end());

答案 3 :(得分:3)

没有什么比这更好的了,但是你可以编写一个模板化的辅助函数,它会在内部对你做同样的事情,这样至少调用网站会看起来更干净,你通过打字错误来减少植入错误的可能性

请参阅accepted answer一个非常相似的问题以及解决方案的外观。