У меня есть следующая проблема: У меня есть один вектор, который представляет собой двумерную матрицу, у меня есть количество строк и количество столбцов и несколько других вещей, которые не имеют значения.замена двух столбцов в матрице, представленной вектором
// A synomon for the type of the grayvalues
typedef unsigned int grayvalue_t;
static_assert(std::numeric_limits<grayvalue_t>::max()<=
std::numeric_limits<size_t>::max(),
"grayvalue_t maximum should be smaller than size_t maximum");
// Number of rows
size_t _R;
// Number of columns
size_t _C;
// Maximum grayvalue
grayvalue_t _MAX_G;
// Pixels' grayvalues
std::vector<grayvalue_t> _pixels;
Я попросил поменять две данные строки (задается индексами) в O (1), что не является проблемой, так как я могу просто использовать тетсру и заменить между двумя непрерывными блоками памяти, но проблема заключается в том, что меня также попросят заменить два заданных столбца (опять же по индексам) на время O (1), но в этом случае столбцы матрицы не являются непрерывными блоками памяти в векторе.
/// swaps between rows r1 and r2
/// Time complexity: O(1)
void swap_rows(const size_t& r1, const size_t& r2) {
}
/// swaps between columns c1 and c2
/// Time complexity: O(1)
void swap_cols(const size_t& c1, const size_t& c2) {
}
Я ничего не пропустил? Хотел бы получить помощь.
Спасибо!
Спасибо, кажется, легко после некоторых изменений. Хорошего дня! –