Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
1

Слить много контейнеров в один

29.01.2017, 19:31. Просмотров 1405. Ответов 6
Метки нет (Все метки)

здравствуйте, подскажите, что не так в коде, ибо не совсем правильно работает (мозг сносит уже от подобного) :
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
void merge(std::vector<std::vector<int>>& in, std::vector<int>& out) {
    auto end = std::end(in);
    for(auto it = std::begin(in); it!=end; ++it) {
        if(it!=end - 1)
        {
            if(it==std::begin(in)) {
               std::vector<int> temp;
               std::merge(std::begin(*it), std::end(*it),
                          std::begin(*(it+1)), std::end(*(it+1)),
                          std::back_inserter(temp));
               out = std::move(temp);
               ++it;
               continue;
            }
            std::vector<int> temp = std::move(out);
            std::merge(std::begin(temp), std::end(temp),
                       std::begin(*it), std::end(*it),
                       std::back_inserter(out));
            out = std::move(temp);
        } else {
            std::vector<int> temp = std::move(out);
            std::merge(std::begin(*it), std::end(*it),
                       std::begin(temp), std::end(temp),
                       std::back_inserter(out));
        }
    }
}
int main() {
//с этим вектором неправильно выводит
//std::vector<std::vector<int>> veca = {{1,3,4, 4, 5, 99}, {1001}, {1, 3, 3, 128, 129},{0, 3, 8, 12, 36,1000}};
 
//а с этим правильно
std::vector<std::vector<int>> veca = {{1,3,4, 4, 5, 99}, {1, 3, 3, 128, 129},{0, 3, 8, 12, 36,1000}};
std::vector<int> outs;
    merge(veca, outs);
    std::copy(std::begin(outs), std::end(outs),
              std::ostream_iterator<int>(std::cout, " "));
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2017, 19:31
Ответы с готовыми решениями:

Есть очень много маленьких текстовых файлов необходимо слить в один файл
Очень много маленьких файлов размером от 500 КБ до 90 МБ. Максимальная длина строки в файлах 80...

Слить один два файла в один
Подскажите как слить 1 и 2 файл в 3 файл

Слить много текстовых файлов в несколько, по названию
Задача: есть несколько папок с текстовыми файлами .doc ( внутри одной папки названия файлов вида...

Хочу один системник и много-много мониторов+клавиатур+мышей. Как?
Вопрос: как реализовать возможность одновременной работы на одном системнике нескольким людям...

6
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,029
29.01.2017, 20:24 2
Цитата Сообщение от tapochka Посмотреть сообщение
что не так в коде, ибо не совсем правильно работает
А что он должен делать?
0
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
29.01.2017, 20:59  [ТС] 3
Цитата Сообщение от likehood Посмотреть сообщение
А что он должен делать?
сливать вектор отсортированных векторов в один выходной
0
1118 / 931 / 429
Регистрация: 25.12.2016
Сообщений: 3,029
29.01.2017, 21:01 4
Выходной вектор должен остаться отсортированным?
0
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
29.01.2017, 21:26  [ТС] 5
Цитата Сообщение от likehood Посмотреть сообщение
Выходной вектор должен остаться отсортированным?
ну естественно)
0
124 / 124 / 44
Регистрация: 05.10.2013
Сообщений: 462
29.01.2017, 22:50 6
Лучший ответ Сообщение было отмечено tapochka как решение

Решение

tapochka,

C++
1
2
3
4
5
6
7
8
9
10
void merge(const std::vector<std::vector<int>>& in, std::vector<int>& out) {
    auto end = std::end(in);
    std::vector<int> temp;
    for (auto it = std::begin(in); it != end; ++it) {
        temp = std::move(out);
        std::merge(std::begin(*it), std::end(*it),
            std::begin(temp), std::end(temp),
            std::back_inserter(out));
    }
}
1
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
29.01.2017, 23:05  [ТС] 7
HenryDukart, гусарское спасибо вам
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2017, 23:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Один AJAX для нескольких контейнеров
Здравствуйте. На сайте делаю, что то типа лайкой на AJAX, можно проголосовать за статью (за или...

Слить 6 видео в один
У меня есть 6 видосов, и в каждом видосе есть какие секунд 30-35 отрывка, который мне больше всего...

Слить файлы в один
Добрый вечер. Нужно слить файлы в один: В качестве параметров принимать имена файлов и слить все...

достать в контейнере именно тот класс где была нажата кнопка, 'одинаковых контейнеров много, они выводяться циклом
div class=container div class=result button class=btn /div --------------------- div...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.