vertex_triangle
というヘルパー関数を呼び出すと、vector<pair<T, T>>
を取り込み、整列した三角形にしてから順にvector
に入れることができます。私は私のリターンオブジェクトとしてこれを使用しています:ベクトルなしの順序を返す
template<typename T>
triangle<T> vertex_triangle(const size_t index, const
vector<pair<T, T>>& polygon){
if (0 == index){
return Triangle(polygon.back(), polygon.front(), polygon[1]);
}else if (index == (polygon.size() - 1)){
return Triangle(polygon[polygon.size() - 2], polygon.back(), polygon.front());
}else{
return Triangle(polygon[index - 1], polygon[index], polygon[index + 1]);
}
}
はもともと私が直接このすべて作られた意味のようvector<Triangle<T>> foo
でリターンを配置した:
template <Typename T>
struct Triangle {
Triangle(const pair<T, T>& first, const pair<T, T>& second, const pair<T, T>& third) {
data[0] = first;
data[1] = second;
data[2] = third;
}
pair<T, T> data[3];
};
は、だから私の巻きヘルパー関数は次のようになります
foo.push_back(vertex_triangle(i, bar))
今、私はので、私はvertex_triangle
のリターンを解凍する必要があると思いますvector<pair<T, T>> foo
を使用する必要があります。
const auto temp = vertex_triangle(i, bar);
foo.push_back(temp[0]);
foo.push_back(temp[1]);
foo.push_back(temp[2]);
しかし、私は本当に一時オブジェクト好きではない、何とか彼らを開梱、ポイントのコピーを戻すことなく、私はfoo
にbar
からVertsのを押したい順序を返す方法があり、それらをプッシュ1つずつ戻ってくる?
しかし、私はもっと良いものを望んでいた。 –