Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
1

непонятно зачем нужный map.value_comp

14.07.2013, 03:36. Просмотров 1887. Ответов 8
Метки нет (Все метки)

непонимание здесь в том, что зачем мы пишем
C++
1
std::pair<char,int> highest = {'d',3006}   ;
если все равно всё сравнение идёт по "char" а, не по int. Для этого есть же key_comp которому при сравнении нужен только char
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <map>
typedef std::map<char,int> chint;
int main ()
{ chint mymap;
  mymap['a']=1001;  mymap['b']=2002;  mymap['c']=3003;
  mymap['d']=1101;  mymap['e']=2022;  mymap['f']=4545;
 
  std::cout << "mymap contains:\n";
  chint::iterator it = mymap.begin();
 
  std::pair<char,int> highest = {'d',3006}   ;
 
 std::cout << "mymap contains counting compare:\n";
  while ( mymap.value_comp()(*it, highest) )
    {std::cout << it->first << " => " << it->second << '\n';
    *it++;
    }
  return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2013, 03:36
Ответы с готовыми решениями:

Зачем нужен std::map
Почитал информацию об этом классе, но так и не понял, зачем он нужен?

Зачем нужны функции MapViewOfFile, CreateFileMapping и что в них обозначает слово Map?
Зaчем нужны функции MapViewOfFile, CreateFileMapping и т.д. Что они делают, для чего предназначены...

Непонятно, зачем .f после числа
float sqr(float x) { float tmp = x*x; return tmp; } void main() { ...

Использавание EDI ESI (непонятно зачем)
Есть программа #define _CRT_SECURE_NO_WARNINGS #define _CRT_MOMSTDC_WARNINGS #include &lt;stdio.h&gt;...

8
бжни
2469 / 1679 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
14.07.2013, 09:39 2
Мне кажется это больше для внутреннего использования, во всяком случае не вижу пользы в прямом использовании.
если хочется просто использовать компоратор Map'а для сравнения ключей, то можно использовать key_comp (в оригинале будет возвращать std::less<Key>)
0
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
14.07.2013, 14:06  [ТС] 3
интересно, а есть вообще там какие нибудь функции, чтобы сравнивали по значению int, а не по char
0
Каратель
Эксперт С++
6598 / 4019 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.07.2013, 14:22 4
сравнение двух map
0
бжни
2469 / 1679 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
14.07.2013, 14:28 5
soican, нет
Цитата Сообщение от soican Посмотреть сообщение
интересно, а есть вообще там какие нибудь функции, чтобы сравнивали по значению int, а не по char
нет, потому как это не нужно в map'e.
это можно легко проверить:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <map>
 
class Key {
public:
  bool operator < (const Key&) const {
    return true;
  }
};
 
class Value {
private:
  bool operator < (const Value&) const {
    return true;
  }
};
 
int main () {
  std::map <Key, Value> m;
}
Если в Key поменять public -> private, то будет ошибка компиляции (хотя может быть она будет позже на insert/operator[] - зависит от реализации/нереализации концептов).
Если в Value поставить private - ничего не будет, так как для них нет требования, чтобы Value были бы сравниваемы
0
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
14.07.2013, 15:11  [ТС] 6
Цитата Сообщение от alex_x_x Посмотреть сообщение
Если в Key поменять public -> private, то будет ошибка компиляции (хотя может быть она будет позже на insert/operator[] - зависит от реализации/нереализации концептов).
Если в Value поставить private - ничего не будет, так как для них нет требования, чтобы Value были бы сравниваемы
Из всего этого я делаю вывод, что map изначально создан, для сортировки по алфавиту
0
В астрале
Эксперт С++
8028 / 4785 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
14.07.2013, 15:17 7
soican, Довольно странный вывод. map - ассоциативный контейнер, в котором поиск происходит по ключу, данные хранятся упорядоченно по ключу.
0
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
14.07.2013, 15:29  [ТС] 8
Цитата Сообщение от ForEveR Посмотреть сообщение
данные хранятся упорядоченно по ключу.
а ключ это же char - как ни заноси элементы, при выводе всё выдаст по алфавиту
0
В астрале
Эксперт С++
8028 / 4785 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
14.07.2013, 16:15 9
soican, Это в данном случае ключ char, а быть он может каким угодно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2013, 16:15

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

Зачем писать свой не нужный mvc фреймворк?
Зачем пишут свои mvc фреймворки, когда есть те кто занимается только этим и получает за это 5млн...

Разработчик добавил в скрипт не нужный файл, зачем он нужен?
Всем привет! Купил скрипт и заметил файл php среди js файлов. Открыл, а там просто не понятный для...

Непонятно зачем нужно вводить целых три значения в одну и туже ячейку списка?
В этом коде мне непонятно почему в input нужно вводить три раза (значения) в одну и туже ячейку...

Поместить вектора в map и реализовать перегрузку вывода для map
Всем привет! Нужна помощь в написании программы. У меня есть вот такая прога и мне нужно каким-то...

Обращение к элементам vector, который находится в map, находящийся в map
Всем добрый день! Имеется такой контейнер. Как обращаться к элементам вектора и как пушбэчить...

Обращение к map, который внутри другого map
std::map&lt;int, std::map&lt;std::string, int&gt;&gt; m1; std::map&lt;std::string, int&gt; m2; void main() {...


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

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

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