[英]c++, creating vector of vectors?
问题是,什么是创造最好的办法vector
的vector
秒。 我有几个vector<double> coordinates;
我想让它们起作用。 我应该如何将它们组合成vector<vector<double> >
? 有没有更优雅的方式?
这听起来很合理。 如果您担心可读性,请使用typedef
。
但是,如果所有向量的长度都相同(例如,您实际上是在尝试创建2D数组),请考虑使用boost::multi_array
。
就像你说的看起来不错:
void foo(vector<vector<double> > &);
int main()
{
vector<double> coordinates1, coordinates2, coordinates3;
//...
vector<vector<double> > CoordinateVectors;
CoordinateVectors.push_back(coordinates1);
CoordinateVectors.push_back(coordinates2);
CoordinateVectors.push_back(coordinates3);
foo(CoordinateVectors);
return 0;
}
也许是这样的:
typedef vector<double> coords_vec_type;
typedef vector<coords_vec_type> coords_vec2_type;
void foo(coords_vec2_type& param) {
}
或使用指针以避免复制,如果源矢量已在某个位置:
typedef vector<coords_vec_type*> coords_vec2_ptr_type;
另一个选择是将向量放入数组并将其传递给函数,例如:
void foo(std::vector<double> **vecs, int numVecs)
{
...
}
int main()
{
std::vector<double> coordinates1, coordinates2, coordinates3;
//...
std::vector<double>* CoordinateVectors[3];
CoordinateVectors[0] = &coordinates1;
CoordinateVectors[1] = &coordinates2;
CoordinateVectors[2] = &coordinates3;
foo(CoordinateVectors, 3);
return 0;
}
要么:
void foo(std::vector<double> *vecs, int numVecs)
{
...
}
int main()
{
std::vector<double> coordinates[3];
//...
foo(coordinates, 3);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.