我正在尝试为我想要使用智能指针的类实现一个返回方法。我有:
std::shared_ptr<std::vector<std::string>> data;
我想用这个函数访问它的最后一个值:
std::string& rear()
{
};
如何使用shared_ptr访问值?
答案 0 :(得分:3)
我认为是这样的:
std::string& rear()
{
assert(data.get() != 0 && !data->empty());
return *(*data).rbegin();
};
*data
是一个向量(*data).rbegin()
返回指向最后一个元素的反向迭代器*(*data).rbegin()
取消引用迭代器,获取其值(引用)答案 1 :(得分:3)
在解除引用指针后,只返回数组中的最后一个元素。成员函数std::vector::back将从向量的末尾返回元素,该向量也是最后一个元素。
值得注意的是,智能指针是指针包装器,它通常支持您在C指针上执行的操作,包括解除引用*
和通过解引用->
成员访问。
std::string& rear()
{
if (data && ! data.empty ())
return data->back();
else
// Your Error Handling Should Go Here
;
};