如何在C ++中创建2D vector
并找到其length
和coordinates
?
在这种情况下,向量元素如何填充值?
感谢。
答案 0 :(得分:5)
如果您的目标是进行矩阵计算,请使用Boost::uBLAS。这个库有许多线性代数函数,可能比你手工构建的任何函数都要快得多。
如果你是受虐狂并想坚持使用std::vector
,你需要做以下事情:
std::vector<std::vector<double> > matrix;
matrix.resize(10);
matrix[0].resize(20);
// etc
答案 1 :(得分:3)
您有很多选择。最简单的是原始的二维数组:
int *mat = new int[width * height];
要使用特定值填充它,您可以使用std::fill()
:
std::fill(mat, mat + width * height, 42);
要使用std::generate()
或std::generate_n()
:
int fn() { return std::rand(); }
// ...
std::generate(mat, mat + width * height, fn);
完成使用后,您必须记住delete
数组:
delete[] mat;
所以将数组包装在一个类中是一个好主意,所以你不必记得每次创建时都删除它:
struct matrix {
matrix(int w, int h);
matrix(const matrix& m);
matrix& operator=(const matrix& m);
void swap(const matrix& m);
~matrix();
};
// ...
matrix mat(width, height);
但当然,有人已经为你完成了这项工作。看看boost::multi_array
。
答案 2 :(得分:1)
(S)他想要物理学中的矢量。
要么将自己作为练习滚动:
class Vector2d
{
public:
// basic math (length: pythagorean theorem, coordinates: you are storing those)
private: float x,y;
};
或使用像Eigen这样定义了Vector2f的库