gpt4 book ai didi

c++ - 打印一个 map 的值,它有两个字符串作为键和 vector 作为值

转载 作者:行者123 更新时间:2023-11-28 01:47:05 24 4
gpt4 key购买 nike

我有一张 map ,其中有两个字符串作为键,一个 vector 作为值我怎样才能打印 map 的值(value)。

下面是我的方法,不好,有人可以帮我提前谢谢

注意:我想按键打印而不是在 vector 上迭代

int main()
{
vector<string>value;
std::map<std::pair<string,string> ,vector<string>> myMap;
string input1,input2,MyvectorValue;
for(int i=0;i<5;++i)
{
cin>>input1;
cin>>input2;
cin>>MyvectorValue;
myMap[std::make_pair(input1,input2)].push_back(MyvectorValue);
}
int j=0;
for( auto it = myMap.begin(); it != myMap.end(); ++it )
{
std::vector<std::string>& value = it->second.at(j++);
cout<<value // This is bad

//how can i print all map value ??
}
}

最佳答案

映射的值是一个 vector ,假设你可以使用 C++11,下面的代码就可以满足你的需要。

#include <string>
#include <iostream>
#include <map>
#include <utility>
#include <vector>

int main()
{
std::vector< std::string >value;
std::map< std::pair<std::string , std::string> , std::vector<std::string> > myMap;
std::string input1,input2,MyvectorValue;
for(int i=0;i<5;++i)
{

std::cin>>input1;
std::cin>>input2;
std::cin>>MyvectorValue;
myMap[std::make_pair(input1,input2)].push_back(MyvectorValue);
}

//If you have a particular key (string1, string2), and want to print the values for that specific key...
auto particularKey = std::make_pair("stringA", "stringB");
for(auto val : myMap[particularKey])
std::cout << val << " ";
std::cout << std::endl;

// If you want to iterate through all keys of your map
for(auto &elem : myMap)
{
std::cout << "for the pair with key (" << elem.first.first << "," << elem.first.second << "), the value is the following vector" << std::endl;
for(auto s : elem.second)
{
std::cout << s << " ";
}
std::cout << std::endl << std::endl;
}
return 0;
}

关于c++ - 打印一个 map 的值,它有两个字符串作为键和 vector 作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44619305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com