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

Вопрос по TMemo и сортировке вектора списков. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ "Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++) http://www.cyberforum.ru/cpp-beginners/thread346977.html
Всем здравструйте! :) Есть две задачки: "Теория вероятности Шейтона" и "Кодирование/декодирование информации". Код первой: Задание первой: 1. Составить программу на языке C/С++ наличия букв русского алфавита в тексте, записанном в файл. 2. Определить энтропию этого текста. 3. Построить гистограмму распределения букв. КОД #include<iostream.h> #include<conio.h>
C++ fstream помогите, пожалуйста, чет я совсем запуталась((( /*Дан текстовый фал, содержащий целые числа, разделенные пробелами. Определить является ли последовательность чисел, находящихся в файле, упорядоченной. В новый файл вывести сообщение о том, являются ли последовательность чисел в данном файле упорядоченной по убыванию или по возрастанию либо не упорядоченной, а также - среднее... http://www.cyberforum.ru/cpp-beginners/thread346972.html
C++ Редактирование dll
Здравствуйте. Если честно не знаю в какой раздел обратиться. Решил к вам. Для одной из программ (ГИС Панорама) можно устанавливать дополнительные приложения, запускаемые внутренними средствами этой программы. Сама эта мини-программа представляет собой один dll файл. Необходимо его открыть и изменить немного графический вид (сделать шрифт покрупнее). Сам я немного занимался написанием...
ошибки компиляции C++
недавно создавал тему но никто не помог(поиск юзал не помогло) когда я компилирую пример из boost (самый первый) вот такие ошибки E:\boost_1_47_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()' E:\boost_1_47_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()' E:\boost_1_47_0/boost/system/error_code.hpp:216:...
C++ Множественное наследование http://www.cyberforum.ru/cpp-beginners/thread346897.html
В спортивных соревнованиях различных видов спорта приняли участие люди из разных стран. Название страны имеют следующую структуру country = {имя, телефонный код, почтовый индекс}. Каждый участник соревнования весит ves = {килограмм, грамм} и может участвовать только в одной из предлагаемых спортивных мероприятий. Определить лучшие спортивные результаты, полученные в различных спортивных...
C++ распределенные системы Здравствуйте, не знала в каком разделе задать эту тему. Вопросы не относятся к языку С++. Это общие вопросы по поводу распределенной системы. Помогите кто как сможет: 1) Мультипроцессор – это распределенная система? 2) Мильтиядерный процессор – это распределенная система? 3) Кластер – это распределенная система? 4) Компьютер с копроцессором, у которого своя не совместно... подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
31.08.2011, 19:34     Вопрос по TMemo и сортировке вектора списков.
Цитата Сообщение от Jupiter Посмотреть сообщение
1.
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
#include <list>
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
 
bool comp(const std::list<int>& a, const std::list<int>& b)
{
    return *(++a.begin()) < *(++b.begin());
}
 
int main()
{
    std::vector< std::list<int> > mVl (3, std::list<int>());
    mVl[0].push_back(20);
    mVl[0].push_back(70);
    mVl[0].push_back(17);
  
    mVl[1].push_back(1);
    mVl[1].push_back(120);
    mVl[1].push_back(34);
 
    mVl[2].push_back(13);
    mVl[2].push_back(12);
    mVl[2].push_back(34);
 
    for (std::size_t i = 0; i < mVl.size(); i++) 
    {
    std::copy(mVl[i].begin(), mVl[i].end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
    }
 
    std::sort(mVl.begin(), mVl.end(), comp);
  
    std::cout << std::endl;
 
    for (std::size_t i = 0; i < mVl.size(); i++) 
    {
    std::copy(mVl[i].begin(), mVl[i].end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
    }
}
Здесь все хорошо за исключением одного нюанса. А что если потребуется отсортировать вектор, по третьему элементу списка, или вообще по n-ому элементу списка. Поэтому я бы в вашей функции сравнения поменял бы выражение

C++
1
*(++a.begin())
на более сложную, но зато более перспективную конструкцию.


C++
1
2
3
4
5
6
std::list<int>::iterator left = a.begin();
std::list<int>::iterator right = b.begin();
std::advance( left, 1 );
std::advance( right, 1 );
 
return ( *left < *right );
А с учетом этого написал бы функциональный объект, который принимает в качестве параметра конструктора номер элемента списка, по которому делать сравнение.
 
Текущее время: 19:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru