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

inplace_merge - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получить доступ к памяти http://www.cyberforum.ru/cpp-beginners/thread528537.html
struct df{ unsigned f1: 1; unsigned f2: 1; unsigned f3: 6; }; df gh; df* pointer=(df*)0x50000000; int _tmain(int argc, _TCHAR* argv)
C++ сортировка и связь массивов доброго времени суток. проблема следующая: есть массив, скажем array1 = {1.3,0.5,5.7,0.9}; нужно создать еще один массив в котором по умолчанию стоят ранги первого массива array2= {1,2,3,4};. ... http://www.cyberforum.ru/cpp-beginners/thread528531.html
Поменять местами элементы матрицы, расположенные в верхней и нижней четвертях C++
В квадратной матрице поменять местами элементы, расположенные в верхней и нижней четвертях, ограниченных главной и побочной диагоналями (за исключением элементов этих диагоналей). Помогите...
C++ Дан текст состоящий из нескольких предложений...
Помогите решить задачу. Нужно на Си. Дан текст, состоящий из нескольких предложений. Предложения оканчиваются точкой, восклицательным или вопросительным знаками. Определить количество слов в...
C++ Перевод чисел из системы остаточных классов в десятичную систему счисления http://www.cyberforum.ru/cpp-beginners/thread528508.html
Братья, нужна помощь по переводу чисел из системы остаточных классов в десятичную систему счисления. Я пробовал писать, но у меня только в диапазоне 3*5*7 работает, и то 104 и 103 он переводит...
C++ Сформировать массив из матрицы Дана матрица А(6,7). Сформировать массив В(6), каждый элемент которого есть произведение положительных элементов соответствующего столбца матрицы А. Дана матрица А(6,7). Сформировать массив В(6),... подробнее

Показать сообщение отдельно
IcyWind
8 / 8 / 2
Регистрация: 19.09.2011
Сообщений: 272

inplace_merge - C++

27.03.2012, 15:07. Просмотров 372. Ответов 0
Метки (Все метки)

Здравствуйте. Нужна оч эффективный аналог это фунции...попытался придумать алгоритм, по которому она работает...получается слишком много проверок, копирований и т.д....
решил, что обычное копирование будет работать быстрее:
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
vector<int> my_inplace_merge(vector<int>::iterator midl, vector<int> &vec)
{
    vector<int> help;
    auto it1 = vec.begin();
    auto it2 = midl;
    auto e = vec.end();
    while ((it1 != midl) && (it2 != e))
        if(*it1 < *it2)
        {
            help.push_back(*it1);
            ++it1;
        }
        else
        {
            help.push_back(*it2);
            ++it2;
        }
 
    if (it1 == midl)
        while (it2 != e)
        {
            help.push_back(*it2);
            ++it2;
        }
    else
        if (it2 == e)
            while (it1 != midl)
            {
                help.push_back(*it1);
                ++it1;
            }
 
    return help;
}
ещё вопросик, что происходит со старым вектором, если происходи вызов
C++
1
b1 = my_inplace_merge(p1_ave, b1);
Деструктор вызывается, память освобождается?

так вот....такая функция работает медленней стандартной....
есть мысли по поводу улучшенного алгоритма стандартной?

Добавлено через 3 часа 28 минут
ау?)_

Добавлено через 16 часов 40 минут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru