2

我有一个大小为 4 的向量:

vector <double> example;
example.push_back(3.0); 
example.push_back(10.1);
example.push_back(33.1);
example.push_back(23.3);

所以我有 [3 10.1 33.1 23.3];

如果我知道我有一个方阵(即大小只能是 4、9、16、25、36、49...)

我如何知道与 C++ 中的列数相同的行数?

所以我在做

int size, col, row;
size = example.size();

row = col = sqrt(size);

还有其他更快的方法吗??

4

1 回答 1

2

分配为连续位置的二维数组将比 s 的 avectorvectors 的数组快vector。向量有一个轻微的缺点,即必须调用函数才能访问向量(尽管编译器可能会优化这些函数)。

例如:

enum {MATRIX_SIZE = 4};

// Define a square matrix of integers
int matrix[MATRIX_SIZE * MATRIX_SIZE];

// Set value at row: 3, column 2 to 64:
unsigned int row = 3;
unsigned int column = 2;
matrix[row * MATRIX_SIZE + column] = 64;

使用向量有轻微的开销。

要回答的问题是数组和向量之间的性能差异是否值得。 维护和开发中的人时可能超过性能上的好处(即,较慢但正确且已发布的应用程序可能比较晚发布给市场或消费者的较快应用程序更有价值)。

于 2011-07-14T16:59:19.023 回答