作为构造参数传入的向量
Vectors passed in as construction arguments
如果我有一个类似的类:
namespace Matrix {
class Matrix;
class Vector {
public:
//i want to create a vector the same size as contents with the same values
Vector(const std::vector<ValueType>& contents);
private:
std::vector<ValueType> contents;
}
当内容通过构造函数传入时,它是否会自动复制到我在类中定义的名为内容的向量?还是在构造函数定义中我必须做些什么才能实现这一目标?
不,您不会仅仅因为构造函数具有参数而获得自动复制。你可以这样写:
Vector(const std::vector<ValueType>& contents_) : contents{contents_} { };
这将进行复制。但是,由于两个原因,这整个方法不是一个好主意:
- 如果你将右值传递给构造函数(例如,你从某个函数获得的临时向量),
const &
会创建一个额外的副本。 - 为什么只愿意从 std::vector 初始化数据?您应该愿意至少接受一个 std::span,或者一个容器或一对迭代器上的模板。
- 实际上,我会考虑在底层容器上模板化整个内部向量类。
相关文章:
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 标准::向量声明中使用的模板参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在 c++ 中定义接受不同参数类型的函数向量?
- 如何将向量中的可变参数转换为参数的持有者?
- C++向量默认为成员参数
- 使用向量初始化参数化构造函数的对象数组
- 有什么方法可以将具有不同模板参数的模板类实例放入向量中?
- OpenCL 是否支持向量作为内核参数?
- 使用并行参数向量调用元素向量的成员函数
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 将不同类型的模板参数包提取到双精度向量中会产生警告
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- 将任意模板向量作为函数参数C++传递
- 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- 如何使用非特异性类型制作向量参数
- C++ 类中的向量参数
- 采用向量参数的函数模板回文
- 将向量参数为空传递
- C++和python:向量参数的TypeError解析