【发布时间】:2013-08-01 05:05:16
【问题描述】:
我有以下功能:
void read_int(std::vector<int> &myVector)
这允许我通过它的引用填写myVector。它是这样使用的:
std::vector<int> myVector;
read_int(myVector);
我想稍微重构一下代码(保留原来的功能)到最后有这个:
auto myVector = read_int(); // auto is std::vector<int>
实现这一目标的最佳中间功能是什么?
在我看来,以下直截了当的答案并不理想:
std::vector<int> read_int() {
std::vector<int> myVector_temp;
read_int(myVector_temp);
return myVector_temp;
}
【问题讨论】:
-
为什么你认为这是次优的?
-
新函数不会创建一个中间
vector<int>,然后将其复制到声明中吗? -
你所拥有的看起来比你原来的版本要好得多。如果您担心性能,请阅读return value optimization。
-
这很好,尽管最好不包装函数并实际重构。 std::vector
将在可以删除时被删除,在不能时移动,因此按值返回向量几乎是正确的方法。 -
@juanchopanza:谢谢,不知道返回值优化!
标签: c++ function c++11 refactoring pass-by-reference