我想知道是否有更好看的语法来获取C++向量中最后一个元素的普通指针(而不是迭代器)。
std::vector<int> vec;
int* ptrToLastOne = &(*(vec.end() - 1)) ;
// the other way I could see was
int* ptrToLastOne2 = &vec[ vec.size()-1 ] ;
但这两种都不太好看!
我想知道是否有更好看的语法来获取C++向量中最后一个元素的普通指针(而不是迭代器)。
std::vector<int> vec;
int* ptrToLastOne = &(*(vec.end() - 1)) ;
// the other way I could see was
int* ptrToLastOne2 = &vec[ vec.size()-1 ] ;
但这两种都不太好看!
int* ptrToLastOne = &vec.back(); // precondition: !vec.empty()
int* ptrToLast = &(vec.back()); // Assuming the vector is not empty.
更多选项:
int* ptrToLast = &*vec.rbegin();
或者
int* ptrToLast = &*boost::prev(vec.end());
没有更漂亮的方法,但是你可以编写一个模板帮助函数,它将在内部为您执行相同的操作,这样至少调用站点看起来更加清晰,并且您会通过拼写错误获得较低的植入错误的概率。
请参见非常相似的问题的已接受答案以及解决方案可能是什么。