Форум программистов, компьютерный форум CyberForum.ru

std::accumulate по столбцах двумерного массива - C++

Восстановить пароль Регистрация
 
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
17.12.2013, 13:33     std::accumulate по столбцах двумерного массива #1
Есть массив:
C++
1
2
const int n = 10;
int v[n][n];
Как найти сумму элементов его столбца используя STL?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 13:33     std::accumulate по столбцах двумерного массива
Посмотрите здесь:

STL std::set, std::pair, std::make_pair C++
C++ Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
C++ Сумма элементов в столбцах двумерного массива
Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива. C++
Сортировка строк двумерного std::vector'а в лексикографическом порядке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
17.12.2013, 14:01     std::accumulate по столбцах двумерного массива #2
Боюсь, что проще, чем обычным циклом - никак... Если для строк - другое дело, а для столбцов... Или матрицу транспонировать сначала. Могу ошибаться.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
17.12.2013, 14:44  [ТС]     std::accumulate по столбцах двумерного массива #3
Ну так транспонирование матрицы дольше писать чем 2 вложенных цикла.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.12.2013, 15:08     std::accumulate по столбцах двумерного массива #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
outoftime, В чем проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
 
int main()
{
   const int n = 3;
   int v[n][n] =
   {
      {1,2,3},
      {2,3,4},
      {3,5,5}
   };
   const int column_to_find = 1;
   int result = std::accumulate(std::begin(v), std::end(v), 0,
   [column_to_find](int value, int* array)
   {
      return value + array[column_to_find];
   });
   std::cout << result << std::endl;
}
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
17.12.2013, 15:34  [ТС]     std::accumulate по столбцах двумерного массива #5
ForEveR, посмотрел реализацию accumulate с BinaryOperation, понял как суммируется, но остался вопрос почему
C++
1
std::begin(v), std::end(v)
делает проход только по строках а не по всему массиву? Это из-за того что там типа ссылки на массивы идут и итератор сразу скачет на следующий массив пропуская целую строку?
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.12.2013, 15:37     std::accumulate по столбцах двумерного массива #6
Цитата Сообщение от outoftime Посмотреть сообщение
делает проход только по строках а не по всему массиву?
Что такое двумерный массив? Это массив массивов, поэтому итерация через std::begin()/end() идет по массивам. Ну а дальше, нужно просто взять правильный индекс (т.е. столбец) из этого массива.
Yandex
Объявления
17.12.2013, 15:37     std::accumulate по столбцах двумерного массива
Ответ Создать тему
Опции темы

Текущее время: 12:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru