Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2014, 11:37   #1
Neight
Пользователь
 
Регистрация: 30.10.2014
Сообщений: 18
По умолчанию Алгоритм merge() C++

Привет! Есть массив int Array[5]. есть множество с пятью элементами. Как слить это все в вектор v?
Моя попытка
Код:
merge (Array, Array+5, Set.begin(), Set.end(), v.begin());
Ошибку выдает!
Neight вне форума Ответить с цитированием
Старый 31.10.2014, 11:55   #2
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

А что за ошибка? Не забывайте ещё, что у merge() аргументы должны быть отсортированны. Сделайте как в примере:
Код:
// merge algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::merge, std::sort
#include <vector>       // std::vector

int main () {
    int first[] = {5,10,15,20,25};
    int second[] = {50,40,30,20,10};
    std::vector<int> v(10);

    std::sort (first,first+5);
    std::sort (second,second+5);
    std::merge (first,first+5,second,second+5,v.begin());

    std::cout << "The resulting vector contains:";
    for (std::vector<int>::iterator it=v.begin(); it!=v.end(); ++it)
        std::cout << ' ' << *it;
    std::cout << '\n';

    return 0;
}
8Observer8 вне форума Ответить с цитированием
Старый 31.10.2014, 14:22   #3
Neight
Пользователь
 
Регистрация: 30.10.2014
Сообщений: 18
По умолчанию

У меня все все и так упорядочено, вот весь код:
Код:
#include <iostream>
#include<set>
#include <vector>
using namespace std;

int main()
{
    int Array[5];
    int count = 0;
    for (int i=1; i<10; i+=2)
        Array[count++] = i;
    
    set<int> Set;
    Set.insert(2);
    Set.insert(4);
    Set.insert(6);
    Set.insert(8);
    Set.insert(10);
    
    vector<int> v;
    
    merge(Array, Array+5, Set.begin(), Set.end(), v.begin());
    
    for (vector<int>::iterator it=v.begin(); it != v.end(); it++)
        cout << *it << endl;   
    return 0;
}
Пишет на уровне merge(), :
Цитата:
was not declared in this scope
Neight вне форума Ответить с цитированием
Старый 31.10.2014, 14:58   #4
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

#include <algorithm>?
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 31.10.2014, 15:12   #5
Neight
Пользователь
 
Регистрация: 30.10.2014
Сообщений: 18
По умолчанию

Да, действительно! Спасибо, невнимально я как то...
И все же) добавил algorithm, но:
Компилятор GNU GCC version 4.8.1 пишет
Цитата:
in function main(): Segmentation fault (core dumped)
Neight вне форума Ответить с цитированием
Старый 31.10.2014, 17:06   #6
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
in function main(): Segmentation fault (core dumped)
std::merge сохраняет результат в объект класса std::vector. У этого объекта есть внутренний буфер, где будут храниться данные. Нужно указать сколько вы хотите ячеек. Можно в конструктор передать, как в примере, что я приводил выше:

Код:
vector<int> v( 15 );
А можно так:

Код:
    vector<int> v;
    v.resize( 15 );
В вашем примере можно так написать:
Код:
vector<int> v( count + Set.size() );

Последний раз редактировалось Stilet; 31.10.2014 в 19:32.
8Observer8 вне форума Ответить с цитированием
Старый 01.11.2014, 16:16   #7
Neight
Пользователь
 
Регистрация: 30.10.2014
Сообщений: 18
По умолчанию

спасибо)))
Neight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с Merge Marinkaa SQL, базы данных 2 03.08.2013 19:26
Cascade Merge Sort (на Cи) to$in Помощь студентам 0 31.05.2013 12:57
рекурсивная версия функции merge stasito Помощь студентам 0 12.01.2012 16:26
Подтверждение Merge Chelius Microsoft Office Excel 2 21.06.2010 14:51
Merge menu ds.Dante Общие вопросы .NET 0 17.08.2009 17:51