Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 37

Сортировка диапазона элементов в list (STL)

30.04.2014, 21:14. Показов 1792. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Требуется ввести числа в список, задать числа a и b, изменить порядок элементов, начиная с a-го элемента, заканчивая b-ым элементом. Использовать только стандартную библиотеку.
Числа в список ввел, но абсолютно не понимаю как изменить порядок элементов В ЗАДАННОМ ДИАПАЗОНЕ. Есть метод reverse, но он меняет порядок во всем списке, а мне надо только в части списка.
Получается надо сделать что-то в виде цикла и далее: достать элемент из списка (с помощью какого метода?) и менять его с другим (вроде как метод swap это делает?).

Кусок кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
std::list <int> numbers;
    char ch = 0;
    while ( ch != 'n' ){
        int x;
        std::cin>>x;
        numbers.push_back(x);
        std::cout<<"continue?('n' to exit)\n";
        std::cin>>ch;
    }
    int k,p;
    std::cout<<"enter the range to change the order\n";
    std::cin>>k>>p;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2014, 21:14
Ответы с готовыми решениями:

List STL сортировка и поиск
Ребят, прошу помощи. Перерыл весь инет, нашёл кучу ссылок, пытался сделать поиск и сортировку, ни чего не получается. Помогите пожалуйста,...

Поиск и сортировка list STL
Здравствуйте формумчане. Такая проблема. Написал почти рабочий код, но столкнулся с 2-мя проблемами. Первая: не могу понять как...

(STL LIST SORT) Сортировка по некольким критериям
Здравствуйте! Столкнулся с такой проблемой при сортировке списка. %-) Есть структура: struct PackObject { bool ...

6
209 / 183 / 114
Регистрация: 15.03.2014
Сообщений: 398
30.04.2014, 22:06
Острослав, reverse() позволяет изменять порядок на обратный в указанном диапазоне.
Вот Вам пример.
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
#include <iostream>
#include <list>
#include <algorithm>
 
using namespace std;
 
// функция вывода на экран элементов списка
template < class T >
void PrintList( std::list < T >& lst ) {
    for_each( lst.begin(), lst.end(), []( T n ) {cout << n << " ";} );
    std::cout << endl;
}
 
int main() {
    list < int > numbers;
    const int size = 20, a = 10, b = 15;
 
    // заполнение списка
    int i = 0;
    generate_n( back_inserter( numbers ), size, [i] () mutable {return i++;} );
    // вывод на экран
    PrintList( numbers );
 
    // изменение порядка в указанном диапазоне от a до b
    reverse( next( numbers.begin(), a ), next( numbers.begin(), b ) );
    // вывод измененного списка
    PrintList( numbers );
 
    return 0;
}
Вывод программы
Code
1
2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 
0 1 2 3 4 5 6 7 8 9 14 13 12 11 10 15 16 17 18 19
Компилятор с поддержкой C++11.
Ключ
-std=c++11
0
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 37
30.04.2014, 23:02  [ТС]
Цитата Сообщение от BlackSpace Посмотреть сообщение
Компилятор с поддержкой C++11.
Ключ
-std=c++11
а если у меня студия 2010, то никак иначе не сделать?
0
209 / 183 / 114
Регистрация: 15.03.2014
Сообщений: 398
30.04.2014, 23:21
Лучший ответ Сообщение было отмечено Острослав как решение

Решение

Нету у меня VS 2010, по ней ничего не подскажу.
А в общем случае заполните список, вызывайте reverse() с указанием нужного диапазона итераторами. Сам алгоритм reverse() работает и без поддержки C++11.

Только что проверил - мой код прекрасно собирается на Windows компилятором MinGW, который идет в комплекте с IDE Code::Blocks. Есди задать ключ для C++11.
Ссылка на скачивание с официального сайта
http://www.codeblocks.org/downloads/26
Файл codeblocks-13.12mingw-setup.exe
1
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 37
30.04.2014, 23:33  [ТС]
Цитата Сообщение от BlackSpace Посмотреть сообщение
Есди задать ключ для C++11.
а как задать ключ? (я про это в первый раз слышу)

C++
1
$ -std=c++11
так?и где это поместить?
0
209 / 183 / 114
Регистрация: 15.03.2014
Сообщений: 398
30.04.2014, 23:57
Острослав, Если Вы работаете в командной строке, то прямо в ней и прописываете.
Мой компилятор g++, а файл с исходным кодом называется reverse_list.cpp. Вот пример использования данного ключа.
Code
1
g++ -o reverse_list -std=c++11 reverse_list.cpp
А если в IDE какой-нибудь, то во многих есть специальные опции ( либо на текущий проект, либо на все проекты ) компилятора, где можно задать данный ключ.
Для Code::Blocks можно так:
Settings -> Compiller -> Global compiler settings -> Compiler settings -> Compiler flags -> галочка на пункте, в конце которого [-std=c++11]
В верхнем выпадающем списке должен быть выбран GNU GCC Compiler, если не используете другой компилятор, отличный от того, что идет в комплекте с данной IDE.
Скриншот прикрепил - тут опция для всех проектов.

В других IDE, с которыми мне приходилось работать опции компилятора выставляются похожим образом.
Миниатюры
Сортировка диапазона элементов в list (STL)  
1
209 / 183 / 114
Регистрация: 15.03.2014
Сообщений: 398
01.05.2014, 00:05
Поспешишь - людей насмешишь. В PrintList() не нужны std::, ведь уже есть нужное namespace.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2014, 00:05
Помогаю со студенческими работами здесь

stl, удаление элементов в list
Всем доброго времени суток! прошу помочь в решении задачи: Из числовой последовательности найти удалить все элементы, лежащие в...

STL list. В изначально пустой список вставить 100 элементов путем вставки в случайную позицию
В изначально пустой список вставить 100 элементов путем вставки в случайную позицию. Случайная позиция генерируется каждый раз заново при...

Работа с STL list + пропись List.h
Здравствуйте! Помогите, пожалуйста, разобраться с STL list. Нужно сделать программу в которой будет содержаться класс Student, прописать...

STL list
Доброго времени суток, пока имею поверхностное представление о алгоритмах STL и функциях для контейнеров, но есть задача: требуется...

STL list
как вставить элемент в середину списка list STL? float list_insert_rand(int num) { srand (time(NULL)); int rand_num, rand_pos; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru