从共享指针向量字符串返回值

时间:2015-04-29 05:53:41

标签: c++ c++11 vector shared-ptr

我正在尝试为我想要使用智能指针的类实现一个返回方法。我有:

std::shared_ptr<std::vector<std::string>> data;

我想用这个函数访问它的最后一个值:

std::string& rear()
    {

    };

如何使用shared_ptr访问值?

2 个答案:

答案 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
        ;
};