2017-02-14 4 views
0

イテレータを使用して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; 
} 
+0

エラーメッセージがすぐに切り取られました。それはちょうど良い部分に着くようになっていた! – user4581301

+0

申し訳ありません。ハハ。私はこれで今日は長すぎました。 – krishnab

+1

エラーメッセージは、あなたが持っているものと一致するベクトルコンストラクタがないためです。最も近くに見えるものはここで2番です。http://en.cppreference.com/w/cpp/container/vector/vector: "N要素のベクトルをすべて値Yに設定します。"あなたがそれを供給しているのは、異なるデータ型の 'vector 'からの' iterator'と、その型付けされた 'vector'の2番目の要素です。あなたが 'ベクトル' Ysの内容からXの 'ベクトル 'を構築しようとしているようですが、リンクを読んでより良い適合のコンストラクタを選ぶ以外にあなたの答えはありません。 – user4581301

答えて

0

私は問題を把握しました。これは、Point()コンストラクタでイテレータの引数を設定した方法と関係がありました。ここに更新されたコードがあります。うまくいけば、これはCGALポイントを埋めることを望む人に役立ちます。

#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 < w.size(); ++i) { 
     points.push_back(Point(size_v, w[i].begin(), w[i].end())); 
    } 
    std::cout << points.size() << std::endl; 
    std::cout << points[1].dimension() << std::endl; 
    std::cout << points[1][1] << std::endl; 

    return 0; 
} 
関連する問題