使用数据初始化向量无效 - push_back() 确实有效
Initializing vector with data not working - push_back() does work
我正在尝试创建一个 typedef 向量。每当我尝试使用这些 typedef 之一初始化向量时,它都会出现 no instance of constructor
错误。
typedef定义如下:
typedef palam::geometry::Pt2<uint16_t> CPoints;
我正在尝试像这样初始化一个向量:
CPoints point1(10, 15);
CPoints point2(15, 20);
std::vector<CPoints> points(point1, point2);
但这不起作用。我可以通过使用 NULL
值初始化向量然后使用 push_back()
函数来解决这个问题,就像这样
CPoints point1(10, 15);
CPoints point2(15, 20);
std::vector<CPoints> points(NULL);
points.push_back(point1);
points.push_back(point2);
这项工作似乎有点混乱,我相信一定有更好的方法来解决这个问题。有谁知道为什么我无法使用 typedef 直接初始化向量?
使用这条记录
std::vector<CPoints> points = { point1, point2 };
或者这个
std::vector<CPoints> points { point1, point2 };
或这个
std::vector<CPoints> points( { point1, point2 } );
如果您想同时向向量提供多个对象,则使用初始化列表。
否则编译器会尝试应用这些构造函数之一
vector(size_type n, const T& value, const Allocator& = Allocator());
template <class InputIterator>
vector(InputIterator first, InputIterator last,
const Allocator& = Allocator());
对于声明中指定的参数无效
std::vector<CPoints> points(point1, point2);
这段代码:
std::vector<CPoints> points(point1, point2);
调用 vector
constructor 接受 2 个参数。如果你想用多个元素初始化一个vector
,使用{}
,像这样:
std::vector<CPoints> points {point1, point2};
这调用了 9 号重载,它采用初始化列表。
我正在尝试创建一个 typedef 向量。每当我尝试使用这些 typedef 之一初始化向量时,它都会出现 no instance of constructor
错误。
typedef定义如下:
typedef palam::geometry::Pt2<uint16_t> CPoints;
我正在尝试像这样初始化一个向量:
CPoints point1(10, 15);
CPoints point2(15, 20);
std::vector<CPoints> points(point1, point2);
但这不起作用。我可以通过使用 NULL
值初始化向量然后使用 push_back()
函数来解决这个问题,就像这样
CPoints point1(10, 15);
CPoints point2(15, 20);
std::vector<CPoints> points(NULL);
points.push_back(point1);
points.push_back(point2);
这项工作似乎有点混乱,我相信一定有更好的方法来解决这个问题。有谁知道为什么我无法使用 typedef 直接初始化向量?
使用这条记录
std::vector<CPoints> points = { point1, point2 };
或者这个
std::vector<CPoints> points { point1, point2 };
或这个
std::vector<CPoints> points( { point1, point2 } );
如果您想同时向向量提供多个对象,则使用初始化列表。
否则编译器会尝试应用这些构造函数之一
vector(size_type n, const T& value, const Allocator& = Allocator());
template <class InputIterator>
vector(InputIterator first, InputIterator last,
const Allocator& = Allocator());
对于声明中指定的参数无效
std::vector<CPoints> points(point1, point2);
这段代码:
std::vector<CPoints> points(point1, point2);
调用 vector
constructor 接受 2 个参数。如果你想用多个元素初始化一个vector
,使用{}
,像这样:
std::vector<CPoints> points {point1, point2};
这调用了 9 号重载,它采用初始化列表。