我正在嘗試使用迭代器構建向量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