copy(c.begin(), c.end(), ostream_iterator<int>(cout, " "));
#include <iostream>
#include <vector>
void invert_cols(size_t rows, size_t cols, int n) {
int** m = new int*[rows];
for(size_t row = 0; row < rows; ++row) {
m[row] = new int[cols];
for(size_t col = 0; col < cols; ++col) {
m[row][col] = n + col;
}
for(size_t col = 0; col < cols / 2; ++col) {
int tmp = m[row][col];
m[row][col] = m[row][cols - col - 1];
m[row][cols - col - 1] = tmp;
}
for(size_t col = 0; col < cols; ++col) {
std::cout << m[row][col] << " ";
}
std::cout << std::endl;
}
for(int row = 0; row < rows; ++row)
delete[] m[row];
delete[] m;
}
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
void invert_cols(size_t rows, size_t cols, int n) {
std::vector<std::vector<int>> m(rows, std::vector<int>(cols));
std::for_each(m.begin(), m.end(), [](std::vector<int>& row) {
std::iota(row.begin(), row.end(), n);
std::reverse(row.begin(), row.end());
std::copy(row.begin(), row.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
});
}
<algorithm>
и <numeric>
, такие как std::transform, std::accumulate, std::copy_if, std::generate, std::sort, std::next_permutation и т.д. Для эффективного использования стандартных алгоритмов сначала в обязательном порядке прочитать, что такое лямбда-выражения на cppreference или на хабре.template<typename T>
class Sortable
{
public:
virtual int compare(T *t) = 0;
Sortable(){};
virtual ~Sortable(){};
};
String String::getOctStr() const
{
char buf[MAX_BUF];
itoa(strtol(Str, 0, 16), buf, 8);
return String(buf);
}