Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485

Контейнер map / свои стрктуры / вствить и достать.

08.12.2011, 14:31. Показов 1914. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. пытаюсь засунуть в контейнер свой тип и не получается ...

Код примернно такой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
typedef struct 
{
int q;
short c;
}man;
 
map<man,int> m;
map<man,int>::_Pairib pib;
map<man,int>::iterator it;
 
typedef pair<man, int> MyPair; 
man M ;
 
M.q=12; M.c=13;
MyPair p(M, 1); m.insert(p);
 
M.q=13; M.c=14;
p.first = M;
p.second = 2;
pib = m.insert(p);
 
cout << "Size of my_map: " << m.size() << '\n';
Может кто знает как вставить и изъять эллементы структруры из контейнера?
Раскажите как или где есть примеры!!! Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2011, 14:31
Ответы с готовыми решениями:

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map?
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Контейнер Map
В общем есть такой код: package test1; import java.util.*; abstract class Pet{ String Name; public Pet(String n){ ...

Контейнер map
подскажите пожалуйста, как можно заполнить контейнер map с клавиатуры ?

15
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
08.12.2011, 14:54
_SASA_, Нужно определить оператор < для данной структуры. Или использовать функтор сравнения, передаваемый в мапу.
1
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
08.12.2011, 15:23
Цитата Сообщение от _SASA_ Посмотреть сообщение
map<man,int> m;
здесь вы сказали,что ключ будет структура.элементы словаря хранятся отсортированными(по ключу),вы должны либо определить функтор или перегрузить операцию меньше в структуре либо поменять местами
C++
1
map<int,man>
1
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
08.12.2011, 16:03  [ТС]
А для примера с двумя структурами своими на входе???
Может есть простой пример...
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
08.12.2011, 16:16
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
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <map>
#include <string>
 
struct Cell
{
   Cell()
   {
   }
   Cell(int r, int c):row(r), column(c)
   {
   }
   int row;
   int column;
};
 
namespace std
{
 
bool operator < (const Cell& first, const Cell& second)
{
   return first.row < second.row || (first.row == second.row && first.column < second.column);
}
 
}
 
struct Value
{
   Value()
   {
   }
   Value(const std::string& v, const std::string& t):value(v), type(t)
   {
   }
   std::string value;
   std::string type;
};
 
void map_test()
{
   const size_t cols = 2;
   const size_t rows = 1;
   std::map<Cell, Value> sheet;
   for (size_t i = 0; i < rows; ++i)
   {
      for (size_t j = 0; j < cols; ++j)
      {
         sheet[Cell(i, j)] = Value("aaaaa", "string");
      }
   }
}
 
int main()
{
    map_test();
}
1
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
09.12.2011, 01:36  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct Cell
{
   Cell()
   {
   }
   Cell(int r, int c):row(r), column(c)
   {
   }
   int row;
   int column;
 
string a;
srting b;
 
};
Подскажите а как тут перегрузить оператор?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.12.2011, 11:07
_SASA_, Ну. Что значит как? Как у меня перегружен? Вот так же. Смотря по чему надо сравнивать.
0
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
09.12.2011, 13:21  [ТС]
простите...
- не перегрузить а искать по двойному стринговому ключу
при помощи итератора
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.12.2011, 13:33
_SASA_, Конкретно задачу с чувством, с толком, с расстановкой. Можно даже с выражением.
А то что вы написали - это непонятно что.
1
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
09.12.2011, 15:53  [ТС]
По старому вопросу с итератором уже все...
Спасибо большое - все уже сделал и работает!
________________________________________ ____

Но есть еще вопрос: "Как или каким образом
можно перегружать опретор "<" для ключа
состоящего только из 2-x или из 1-го стринга?".

Спасибо!!!
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.12.2011, 16:08
_SASA_, Пф... Выражайтесь яснее уважаемый.

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
#include <iostream>
#include <map>
#include <string>
#include <algorithm>
 
struct Tst
{
   Tst(const std::string& f, const std::string& s):
      first(f), second(s)
   {
   }
   std::string first;
   std::string second;
};
 
namespace std
{
 
bool operator < (const Tst& first, const Tst& second)
{
   return first.first < second.first && first.second < second.second;
}
 
}
 
int main()
{
   std::map<Tst, int> tstmap;
   tstmap.insert(std::make_pair(Tst("a", "b"), 10));
   tstmap.insert(std::make_pair(Tst("c", "e"), 20));
   tstmap.insert(std::make_pair(Tst("f", "z"), 45));
   std::for_each(tstmap.begin(), tstmap.end(), [](const std::pair<Tst, int>& val) 
   {
      std::cout << val.first.first << ' ' << val.first.second << ' ' << val.second << std::endl;
   });
}
http://liveworkspace.org/code/... 4c9764f9e0
1
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
09.12.2011, 16:33  [ТС]
В очередной раз спасибо большое!!!
Вы опять мне очень очень помогли!
0
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
12.12.2011, 17:06  [ТС]
Простите, но вопрос еще один и последний:

А как перегрузить оператор "<" с 3 или 5 стрингами?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.12.2011, 17:14
_SASA_, Да так же как с одним или двумя.
1
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
12.12.2011, 20:01  [ТС]
Простите - не то опять сказал!
Строки будут длинные не из одного символа...
Нужно сравнение длинных стрингов при помощи перегрузки "<"!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct asd
{
...
string a;
string s;
string d;
}
 
bool operator < (const asd& first, const asd& second)
{
 if ((strlen(first.a)<(strlen(secund.a))) // или strncmp
 return first.a < second.a ; //  теоретически нужно всеx сравнить
// а вот сдесь не знаю как... может другие условия есть еще
}
Подскажите пожалуйста общее направление при перегрузке и сравнении!
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
12.12.2011, 20:53
_SASA_, Да сколько угодно...

C++
1
return first.a < second.a && first.b < second.b && first.c < second.c;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2011, 20:53
Помогаю со студенческими работами здесь

Контейнер map
Cоздать ассоциативный список имен (ключей), телефонов. Осуществить поиск по именам. Дополнить его данным адрес. Добавить возможности...

Контейнер map
Почему нельзя писать route? Строки 4,6. bool search(const map&lt;int, set&lt;string&gt;&gt;&amp; route, const set&lt;string&gt;&amp; vstr) { for (int i...

Контейнер map ?
Не совсем удается разобраться Не удается разобраться с ассоциативными контейнерами ! Как выглядит объявление функции в псевдокоде? Что...

Контейнер map
в программе используется ассоциативный массив, идентификатором которого являются символы проблема в том что появляется элемент с...

Контейнер map
Здравствуйте, работаю с контейнером map, анализирую текст, получаю записи типа &quot;слово: число его появлений в тексте&quot;. Хотелось бы...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru