2010-09-06 96 views
10

我不知道是否有这个漂亮的语法让一个正常的指针(不迭代器)到最后一个元素在C++矢量“指向最后一个元素的指针”更漂亮,std :: vector?

std::vector<int> vec; 

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

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

但这些都没有非常好看!

+0

http://stackoverflow.com/questions/14275291的重复 – kebs 2015-06-10 13:54:57

回答

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

没有为更漂亮,但你可以写一个模板辅助函数将在内部做同样的话,而这样一来,至少在调用的地方会显得干净多了,你会得到通过种植错误的概率较低错别字。

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

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

有些选项:

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

int* ptrToLast = &*boost::prev(vec.end()); 
相关问题