C++ 从共享指针向量字符串返回值
我正在尝试为我想要使用智能指针的类实现一个返回方法。我有:C++ 从共享指针向量字符串返回值,c++,c++11,vector,shared-ptr,C++,C++11,Vector,Shared Ptr,我正在尝试为我想要使用智能指针的类实现一个返回方法。我有: std::shared_ptr<std::vector<std::string>> data; 如何使用共享的\u ptr访问值?我认为是这样的: std::string& rear() { assert(data.get() != 0 && !data->empty()); return *(*data).rbegin(); }; *数据是一个向量 (*dat
std::shared_ptr<std::vector<std::string>> data;
如何使用共享的\u ptr访问值?我认为是这样的:
std::string& rear()
{
assert(data.get() != 0 && !data->empty());
return *(*data).rbegin();
};
是一个向量*数据
(*data).rbegin()返回指向最后一个元素的反向迭代器
*(*data).rbegin()取消对迭代器的引用,获取其值(引用)
*
和通过取消引用->
访问成员
std::string& rear()
{
if (data && ! data.empty ())
return data->back();
else
// Your Error Handling Should Go Here
;
};
返回数据->at(数据->大小()-1);在卷筒中,这是正确的方法吗?有任何原因,你有代码> STD::SysDypPTR< /Cord>:STD::SysDypTR,因为我想用C++ 11种方式来实现我的类,因为它更安全,<代码> STD::vector < /Cord>已经安全(在自动内存管理方面)。如果将它包装在
std::shared\u ptr
中,您不会得到任何额外的好处;最近我一直在使用std::string,我忘记了std::vector有一个back()成员函数:)使用Abhijit解决方案imo,它更简单更清晰:)我认为应该是if(data.get()&&…)@rozina:我认为这可能不是必需的,因为检查应该调用get成员函数。如果大小() > 0 check@rozina您不需要get
来检查指针的有效性。
std::string& rear()
{
if (data && ! data.empty ())
return data->back();
else
// Your Error Handling Should Go Here
;
};