我正在尝试使用迭代器构建向量CGAL::points_d
。我不断收到一条我不明白的错误消息。该错误似乎与我尝试将两个矢量迭代器传递给CGAL::Points_d
对象的方式一样。我认为这可能是围绕指示点的维度问题,我使用了Dynamic_Dimension_Tag
,但我无法想象这个问题。消息如下。Cgal :: Dynamic_dimension_tag在尝试构建点向量时出错
error: no matching function for call to ‘std::vector<CGAL::Wrap::Point_d<CGAL::Epick_d<CGAL::Dynamic_dimension_tag> > >::vector(std::vector<int>::size_type, std::vector<std::vector<int> >::iterator, __gnu_cxx::__normal_iterator<std::vector<int>*, std::vector<std::vector<int> > >)’ Vector_of_points points(u.size(), w.begin(), next(w.begin()));
下面是一些玩具代码,我正在同。
#include <iostream>
#include <CGAL/Kernel_d/Point_d.h>
#include <CGAL/Epick_d.h>
#include <iostream>
#include <vector>
typedef CGAL::Epick_d<CGAL::Dynamic_dimension_tag> Kernel;
typedef Kernel::Point_d Point;
typedef std::vector<Point> Vector_of_points;
typedef std::vector<int> dbvec ;
int main() {
dbvec v ;
dbvec u ;
std::vector<std::vector<int>> w;
int size_v = 20;
for(int i=0; i < size_v; ++i){
v.push_back(i);
}
for(int i=size_v; i-- >0;){
u.push_back(i);
}
w.push_back(u);
w.push_back(v);
w.push_back(u);
Vector_of_points points;
for(int i=0; i < size_v; ++i) {
points.push_back(Point(size_v, w[i].begin(), next(w[i].begin())));
}
std::cout << points.size() << std::endl;
return 0;
}
您已经很快删除了错误消息。它刚刚开始达到最佳状态! – user4581301
糟糕。对于那个很抱歉。哈哈。今天我一直在这太久。 – krishnab
错误消息是因为没有与您拥有的相匹配的向量构造函数。这个[看起来最接近的数字是2](http://en.cppreference.com/w/cpp/container/vector/vector):“构建一个N个元素的矢量,它们都被设置为Y.”你喂它的是count,来自不同数据类型的vector的'iterator',以及不同类型的'vector'中的第二个元素。看起来你正试图从vector的内容中构建一个X的vector,但除了阅读链接并选择一个更好的构造函数外,我没有任何答案。 – user4581301