イテレータを使用してCGAL::points_d
のベクトルを構築しようとしています。私は理解していないエラーメッセージを受け取り続けます。このエラーは、2つのベクトルイテレータを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に設定します。"あなたがそれを供給しているのは、異なるデータ型の 'vector 'からの' iterator'と、その型付けされた 'vector'の2番目の要素です。あなたが 'ベクトル' Ysの内容からXの 'ベクトル 'を構築しようとしているようですが、リンクを読んでより良い適合のコンストラクタを選ぶ以外にあなたの答えはありません。 – user4581301