Таким образом, вы можете использовать вектор пар, которые могут содержать string
с и int
с.
Этот пример программы позволяет вводить пары узел за узлом и сохраняет его в векторе пар (string
и int
):
Живой образец
#include <iostream>
#include <vector>
int main()
{
int num;
std::string str;
std::vector<std::pair<std::string, int>> nodes; //container
std::cout << "Enter string and number" << std::endl;
while(std::cin >> str)
{
if(str == "exit") //type exit to leave the input cycle
break;
std::cin >> num;
nodes.push_back(std::make_pair(str, num));
}
for (const auto& p : nodes) // print the products
{
std::cout << p.first << " " << p.second << std::endl;
}
}
Теперь вы можете включить его в то, что вам нужно сделать поскольку ваше описание проблемы не позволяет мне понять, как именно вы связываете сотрудников с продуктами и именами.
РЕДАКТИРОВАТЬ
Поэтому, основываясь на вашем комментарии, я добавил новое решение, поддерживающее std::pair
, которое очень удобно использовать, и я уверен, что никто не будет жаловаться на это, поэтому вам нужен контейнер с парами (имя, вектор значений).
Я разделил ввод имен и значений, потому что у вас есть сотрудник с несколькими именами, с которым сложнее управлять вводом.
Количество сотрудников и продуктов отсутствует, вы можете указать столько цен, сколько вам нужно, столько значений продуктов, сколько вам нужно.
Живой образец
#include <iostream>
#include <vector>
#include <sstream>
int main() {
double temp_num;
std::string str, name;
std::vector<std::pair<std::string, std::vector<double>>> nodes; //container
std::vector<double> values;
while(true){
std::cout << "Enter employee name ('exit' to leave): ";
getline(std::cin, str); //employee name
if (str == "exit") {
break;
}
name = str;
std::cout << "Enter values: ";
getline(std::cin, str); //values
std::stringstream ss(str);
while(ss >> temp_num)
values.push_back(temp_num);
nodes.push_back(std::make_pair(name, values));
}
std::cout << std::endl;
for (const auto& p : nodes) // print names and the products
{
std::cout <<"Name - " << p.first << ": ";
for (const auto& vals : p.second) {
std::cout <<"$"<< vals << " ";
}
std::cout << std::endl;
}
}