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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vikusechk
1 / 1 / 0
Регистрация: 16.03.2014
Сообщений: 107
#1

Работа с библиотекой STL, контейнер map - C++

16.03.2014, 15:30. Просмотров 607. Ответов 3
Метки нет (Все метки)

Ввожу с экрана имя и номер телефона несколько раз, но for_each почему-то выводит на экран только последнего введенного пользователя, а мне нужно, чтобы выводил всех. Объясните, что я не так делаю? И еще когда пытаюсь вставить for_each в отдельный if(x==3), то на команду 3 вообще никак не реагирует. заранее спасибо!
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
56
57
58
59
60
61
62
63
64
65
//---------------------------------------------------------------------------
#include <algorithm>
#include <iostream>
#include <conio.h>
#include <vcl.h>
#include <map>
#include <stdlib.h>
#pragma hdrstop
#include <iostream>
#include <string>
//---------------------------------------------------------------------------
 
#pragma argsused
namespace my
{
template <class Key, class Value>
struct print_pair
    {
        void operator()(const pair<Key, Value>& p)
        {
                cout << p.first << " -> " << p.second << endl;
        }
    };
}
int main(int argc, char* argv[])
{
    int x;
M1: std::cout<<"Chose the command!"<< " : " << "1=Vvesti v bazu, 2=Poisk, 3=Vyvesti spisok, 4=Vyhod";
    std::cout<< std::endl;
    std::cin>>x;
    if(x<1||x>4)
        {
            std::cout<<"Error!Try again"<<endl;
            goto M1;
        }
    if(x==4) exit;
 
    std::multimap<AnsiString,int>            Data;
    std::multimap<AnsiString,int>::iterator  it;
 
    if (x==1)
        {
            for( int i = 0; i < 10; i++ )
                {
                    char s[10];
                    AnsiString str;
                    int  d;
                    std::cout<< "Enter name"<< std::endl;
                    std::cin>> s;
                    str = AnsiString(s);
                    std::cout<< "Enter date"<< std::endl;
                    std::cin>> d;
                    Data.insert( std::make_pair( str, d ));
                    std::cout<< "Vvod uspewen"<< std::endl;
                    for_each( Data.begin(), Data.end(), my::print_pair<AnsiString,int>() );
                    goto M1;
                }
 
 
        }
 
    getch();
    return 0;
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 15:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с библиотекой STL, контейнер map (C++):

Контейнер map и алгоритмы STL: несовместимость? - C++
Всем доброго времени суток! Столкнулся с проблемой: алгоритм remove_if не работает с контейнером map. Рассмотрим следующую функцию: ...

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

задача с stl библиотекой и файлами - C++
В текстовом файле input.txt записаны слова – по одному в строке. Необходимо разбить слова на группы так, чтобы в одну группу попали все...

контейнер map - C++
Помогите, пожалуйста дописать программу. Определите карту, в которой ключом является фамилия семьи, а значением вектор, который содержит...

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

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

3
zss
Модератор
Эксперт С++
6568 / 6130 / 2021
Регистрация: 18.12.2011
Сообщений: 15,982
Завершенные тесты: 1
16.03.2014, 15:35 #2
Вынесите строку 55
C++
1
  for_each( Data.begin(), Data.end(), my::print_pair<AnsiString,int>() );
из цикла
0
vikusechk
1 / 1 / 0
Регистрация: 16.03.2014
Сообщений: 107
16.03.2014, 15:47  [ТС] #3
вынесла, теперь вообще никак не выводит,просто закрывает программу. хотя сделала выход из цикла с помощью break
0
zss
Модератор
Эксперт С++
6568 / 6130 / 2021
Регистрация: 18.12.2011
Сообщений: 15,982
Завершенные тесты: 1
16.03.2014, 16:00 #4
У Вас ошибки при работе с входным потоком.
После ввода числа указатель потока остается на первом пробельном символе.
Вы после этого вводите строку. Этот пробельный символ оказывается концом строки
и... получается пустая введенная строка.
Попробуйте самостоятельно исправить.

Вот так работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
      for( int i = 0; i < 3; i++ )
      {
                    char s[100];
                    string str;
                    int  d;
                    std::cout<< "Enter name"<< std::endl;
                    std::cin>> s;
                    str = string(s);
                    std::cout<< "Enter date"<< std::endl;
                    std::cin>>d;cin.getline(s,9);
                    Data.insert( std::make_pair( str, d ));
                    std::cout<< "Vvod uspewen"<< std::endl;
                    //goto M1;
      }
      for_each( Data.begin(), Data.end(), my::print_pair<string,int>() );
10 исправил на тройку, чтобы поменьше вводить
0
16.03.2014, 16:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2014, 16:00
Привет! Вот еще темы с ответами:

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

Контейнер map - C++
Стоит задача реализовать контейнер map. Вопрос возникает при реализации итератора для этого контейнера. В итераторе должны быть реализованы...

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

Map контейнер сортировка - C++
Добрый день. Собственно необходимо вывести отсортированный мап контейнер по числу гласных в слове. Вводить строку и выводить мап...


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

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

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