получить число строк и количество столбцов квадратной матрицы из вектора c ++ - PullRequest
2 голосов
/ 14 июля 2011

У меня есть вектор размера, скажем, 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);

Есть ли другой способ быстрее ??

1 Ответ

2 голосов
/ 14 июля 2011

Двумерный массив, выделенный как смежные местоположения, будет быстрее, чем vector из vector с или массив 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;

Использование векторов имеет небольшие издержки,

Вопрос, на который нужно ответить, состоит в том, имеет ли смысл разница в производительности между массивами и векторами. Количество человеко-часов в обслуживании и разработке может перевесить преимущество в производительности (т. Е. Медленнее, но правильнее и выпущеннее).приложения могут стоить больше, чем более быстрое приложение, которое будет выпущено намного позже на рынке или для потребителей).

...