2011-01-30 91 views
3

如何在C++中创建2D vector并找到它的lengthcoordinatesC++ 2D矢量和操作

在这种情况下,向量元素如何填充值?

谢谢。

+0

二维向量* *图书馆?你的意思是*矩阵*? – 2011-01-30 19:02:27

回答

5

如果你的目标是做矩阵计算,使用Boost::uBLAS。这个库有许多线性代数函数,并且可能比你手动构建的任何东西都快。

如果你是一个受虐狂,想坚持std::vector,你需要做一些这样的:

std::vector<std::vector<double> > matrix; 
matrix.resize(10); 
matrix[0].resize(20); 
// etc 
3

你有多种选择。最简单的是一个原始2维数组:

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

1

(S)他想要物理学中的矢量。

要么推出自己作为一个练习:

class Vector2d 
{ 
    public: 
    // basic math (length: pythagorean theorem, coordinates: you are storing those) 
    private: float x,y; 
}; 

或使用像征具有Vector2f定义