C++ 用C+中的自定义类型通过常量引用传递向量+;
假设您有自定义类型C++ 用C+中的自定义类型通过常量引用传递向量+;,c++,pass-by-reference,C++,Pass By Reference,假设您有自定义类型 class Foo {} 是通过const引用将Foo类型的向量传递给这样的方法的正确方法 void f(const std::vector<const Foo&>& bar); void f(const std::vector&bar); 或者我应该这样做 void f(const std::vector<Foo>& bar); void f(const std::vector&bar); 我更想知道我更喜欢使用哪一
class Foo {}
是通过const引用将Foo类型的向量传递给这样的方法的正确方法
void f(const std::vector<const Foo&>& bar);
void f(const std::vector&bar);
或者我应该这样做
void f(const std::vector<Foo>& bar);
void f(const std::vector&bar);
我更想知道我更喜欢使用哪一种类型。您应该将
const std::vector&
作为类型传递。这可以防止在调用函数时获取向量的值副本
请注意,当前标准不允许使用std::vector
:std::vector不能包含引用类型。您可以尝试。(通过调用f
其他地方)“seam都可以编译和工作。”演示。我一秒钟也不相信任何代码可以在函数签名中交换vector
和vector
,并且仍然为同一调用站点编译。。。因为容器不能包含引用,所以后者无论如何都不是有效的。