Я пытаюсь транспонировать матрицу, построенную из векторов.
Вот функция транспонирования, которую я написал:
void transpose(std::vector<std::vector<int>>& fill_mat) {
for (int i = 0; i < fill_mat.size(); ++i) {
for (int j = 0; j < fill_mat.size(); ++j) {
std::swap(fill_mat[i][j], fill_mat[j][i]);
}
}
}
Кажется, она ничего не делает: мои окончательные результатытакие же, как и начальные.
Вот моя полная программа:
#include<iostream>
#include<vector>
#include<utility>
void print_matrix(std::vector<std::vector<int>>& to_print) {
for (int i = 0; i < to_print.size(); ++i) {
for (int j = 0; j < to_print.size(); ++j) {
std::cout << " " << to_print[i][j];
}
std::cout << std::endl;
}
}
void make_matrix(std::vector<std::vector<int>>& fill_mat) {
for (int i = 0; i < fill_mat.size(); ++i) {
for (int j = 0; j < fill_mat.size(); ++j) {
fill_mat[i][j] = rand() % 15;
}
}
}
void transpose(std::vector<std::vector<int>>& fill_mat) {
for (int i = 0; i < fill_mat.size(); ++i) {
for (int j = 0; j < fill_mat.size(); ++j) {
std::swap(fill_mat[i][j], fill_mat[j][i]);
}
}
}
int main() {
int size = 3;
std::vector<std::vector<int>> matrix_sample(size, std::vector<int>(size));
make_matrix(matrix_sample);
print_matrix(matrix_sample);
transpose(matrix_sample);
std::cout << "----## transpose ##-----" << std::endl;
print_matrix(matrix_sample);
}
Я ожидал распечатать транспонированную матрицу, но вход в итоге был таким же, каквыход.Что я делаю не так?