#c #algorithm #stl #vector
#c #алгоритм #stl #вектор #c
Вопрос:
У меня есть 2D-массив (вектор вектора целых чисел) со значениями int, такими как эти
34 19 89 45 21 34 67 32 87 12 23 18
Я хочу найти максимальное и минимальное значение для значений столбцов (не значений строк), предпочтительно используя алгоритмы STL
std::max_element, std::min_element
Комментарии:
1. Это вектор строк или вектор столбцов? Это, очевидно, важно.
2. Что вы имеете в виду под максимальными значениями столбцов? Максимальное значение сумм столбцов или вектор максимальных значений столбцов?
Ответ №1:
Создайте пользовательский функтор, который сравнивает определенный номер столбца, например:
struct column_comparer
{
int column_num;
column_comparer(int c) : column_num(c) {}
bool operator()(const std::vector<int> amp; lhs, const std::vector<int> amp; rhs) const
{
return lhs[column_num] < rhs[column_num];
}
};
...
std::vector<std::vector<int>> v;
...
... // fill it with data
...
int column_num = 3;
int n = (*std::max_element(v.begin(), v.end(), column_comparer(column_num)))[column_num];
Комментарии:
1. Краткое примечание: вам нужно будет добавить дополнительный пробел после
std::vector<int>
и символ «>» в объявленииv
, чтобы это было скомпилировано, если вы не используете C 0x.