C++按值返回集合
C++ returning collection by value
我想让我的集合在类之外不可变。
来自:
public:
vector<int>& getValues(){
return values;
}
private:
vector <int>& values;
到此:
public:
vector<int> getValues(){
return values;
}
private:
vector <int>& values;
它能正常工作吗?
它会起作用,但最好返回一个常量引用:
const vector<int> & getValues() const {
return values;
}
此外,在类中存储引用通常(并不总是(是一个错误。您可能想要一个值,或者可能需要一个指针。
是的,但如果集合很大,并且经常调用函数,则可能会对性能产生负面影响。只返回一个vector<int> const&
(并声明getValues()
const
(有什么问题?
此外,我想知道你的会员是推荐人。成员不应该是推荐人。
public:
vector<int> getValues(){
return values;
}
private:
vector <int>& values;
不可能按原样工作,对向量的引用实际是什么?除非你没有在这里显示所有代码,否则它是不起作用的。
只需使用vector<int> values;
即可。
是的,你可以这样做,但这不一定是你想要的。
通过这样做,getValues方法将生成向量的副本。这将需要一些时间(取决于矢量的大小(。
如果你确信向量没有频繁更改,为什么不返回一个常量引用,比如:
const vector<int> &getValues() {return values;}
返回const_iterators
的pair
,然后被调用者也从底层容器中抽象出来。。。
例如
typedef std::vector<int> vector_type;
public:
typedef std::pair<vector_type::const_iterator, vector_type::const_iterator> range;
range getValues() const
{
return range(values.begin(), values.end());
}
private:
vector_type values;
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 处理多个异常集合的C++方法
- 什么时候在C++中返回常量引用是个好主意
- 我可以按类类型访问哪些类型的集合,并在必要时返回未找到
- 为什么迭代器不返回集合的开头
- weak_ptr还是shared_ptr应该从唯一所有者集合返回
- 返回已过滤集合的便捷方式
- 如何正确返回unique_ptr的集合
- 集合数据结构中的 end() 迭代器应该返回什么
- C++返回类型的泛型集合的正确方法
- C++:为什么返回false的集合顺序的函子只允许向集合中添加一个元素
- 当返回一个集合指针时,客户端如何知道它是否需要销毁它?
- 函数接受一个指向集合的指针的优点,以避免在返回时复制
- 按值返回指针的集合
- 用于在C++中返回集合的接口
- 返回对集合中unique_ptr的引用
- 设计模式-在C++中返回对象集合的函数
- 当对集合的引用未更改时,我是否应该返回集合
- C++按值返回集合
- 具有返回值的变异体(集合函数)