Я пытаюсь создать карту C ++, содержащую строку в качестве ключа и итератор C ++ (векторный итератор) в качестве значения. В прилагаемом коде: у меня есть вектор с именем numbers , в котором хранится значение ключа, и я беру итератор этого элемента вектора, хранящего его на карте, под названием Directory . Код должен работать так, как написано, но когда я пытаюсь напечатать значение ключа каталога, некоторые значения не отображаются в каталоге. Мне действительно нужно еще раз взглянуть на это, поскольку я уже часами не знаю, в чем я не прав. Пожалуйста, помогите!
#include <iostream>
#include <vector>
#include <map>
using namespace std;
vector<string> keys;
map<string, vector<string>::iterator> Directory;
void printStuff()
{
for (auto x : Directory)
{
cout << "Key: " << x.first << "---- Value: " << (*x.second) << endl;
}
}
void add()
{
string name;
string number;
printf("Enter Key : ");
cin >> name;
printf("Enter Value : ");
cin >> number;
keys.push_back(number);
vector<string>::iterator num;
num = keys.end() - 1;
Directory[name] = num;
}
int main()
{
int ch = 10;
while (ch != 0)
{
cout << "1. Add a Contact\n";
cout << "2. Lookup Directory\n";
cin >> ch;
switch (ch)
{
case 1:
add();
break;
case 2:
printStuff();
break;
case 3:
exit(0);
break;
}
}
return 0;
}