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

Двумерный массив в одномерный - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Список процессов с иконками http://www.cyberforum.ru/cpp-beginners/thread954595.html
Каким образом можно отабразить собственные иконки приложений в списке процессов? Процессы перечисляю так: HANDLE hProcessSnap; PROCESSENTRY32 pros32; int i=0; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); pros32.dwSize = sizeof(PROCESSENTRY32); while (Process32Next(hProcessSnap, &pros32)) { String ^_stNameProc = gcnew String(pros32.szExeFile);
C++ Что означают знаки подчеркивания впереди идентификатора? В исходнике при описании типа через typedef имя типа начинается с 2-х знаков подчеркивания. Дальше в программе это имя присутствует без подчеркиваний. Объясните, какую функцию выполняют эти знаки? http://www.cyberforum.ru/cpp-beginners/thread954580.html
Добавление двух функций на кнопку C++ Builder
C++ Подскажите пожалуйста, как на одну кнопку добавить две функции,пример- включение выключение что нибудь.
Беда с подключением библиотеки C++
Доброго времени суток. Суть проблемы в том, что один и тот же код работает по разному в зависимости от того находится ли он в библиотеки или нет... Вот класс: class Bitmap { private: Pixel** pixels; Vector2 Size; public:
C++ Как просмотреть цикл не последовательно в debugger'e? http://www.cyberforum.ru/cpp-beginners/thread954569.html
Вот, например, есть цикл int a; a = 0; int n = 10000; for (int i = 1; i < n; i++) a = a+1; Возможно ли, и если да, то как в debugger'e посмотреть значения переменных, которые изменяются в цикле (в данном случае a), но не последовательно, а с интервалом через 100 итераций? т.е., можно ли запустить цикл, посмотреть значения, прокрутить 100 итераций, посмотреть значения и т. д.
C++ Программа поиска и удаления кавычек в текстовом файле Всем привет! Вот озадачился написанием программы для поиска и удаления двойных кавычек из текстовых файлов. К примеру, есть папка, в ней может быть несколько текстовых файлов. Нужно по очереди открыть каждый файл, проверить на наличие кавычек, в случае их нахождения, удалить их (кавычки), сохранить файл, и закрыть. Т.к в C++ мои познания довольно посредственны, прошу совета по алгоритму,... подробнее

Показать сообщение отдельно
gray_fox
What a waste!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
17.09.2013, 16:45     Двумерный массив в одномерный
Как вариант:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <utility>
#include <vector>
#include <cstdlib>
#include <ctime>
 
 
template<
      typename InputIterator
    , typename OutputIterator
    , typename Compare = std::less<typename std::iterator_traits<InputIterator>::value_type>
>
OutputIterator
merge(std::vector<std::pair<InputIterator, InputIterator>> input, OutputIterator output, Compare const compare = Compare()) {
   using input_range = std::pair<InputIterator, InputIterator>; 
   
   auto const range_less = [=] (input_range lhs, input_range rhs) {
      return compare(*lhs.first, *rhs.first);
   };
   auto const range_empty = [] (input_range range) {
      return range.first == range.second;
   };
    
   input.erase(std::remove_if(std::begin(input), std::end(input), range_empty), std::end(input));   
       
   while (!input.empty()) {
      auto const min = std::min_element(std::begin(input), std::end(input), range_less);
            
      *output++ = *min->first++;
      
      if (range_empty(*min)) {
         input.erase(min);
      }
   }
   
   return output;
}
 
 
int main() {
   std::size_t const height = 10;
   std::size_t const width  = 10;
   int matrix[height][width];
   int array[height * width];
   
   std::srand(std::time(nullptr));
   for (auto & row : matrix) {
      std::generate(std::begin(row), std::end(row), [] () { return std::rand() % 1000; });
      std::sort(std::begin(row), std::end(row));
   }
   
   std::cout << "before merge" << std::endl;
   for (auto const& row : matrix) {
      std::copy(std::begin(row), std::end(row), std::ostream_iterator<int>{std::cout, "\t"});
      std::cout << std::endl;
   }
   
   std::vector<std::pair<int *, int *>> rows(height);
   for (std::size_t i = 0; i != height; ++i) {
      rows[i] = {std::begin(matrix[i]), std::end(matrix[i])};
   }
   merge(rows, array);
   
   std::cout << "after merge" << std::endl;
   std::copy(std::begin(array), std::end(array), std::ostream_iterator<int>{std::cout, "\t"});
   std::cout << std::endl;
}
http://ideone.com/C9VkKK
 
Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru