我有一个地图,其中有两个字符串作为键,一个矢量作为值 我该如何打印地图的价值。
以下是我的做法很糟糕有人可以提前帮助我
注意:我想按键打印而不是迭代矢量
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 ??
}
}
答案 0 :(得分:2)
地图的值是一个向量,假设您可以使用C ++ 11,以下代码可以满足您的需求。
Array.Reverse
答案 1 :(得分:0)
您可以通过访问该对来打印密钥,然后使用first
和second
分别获取该对的第一个和第二个成员。
您还可以打印值,方法是访问矢量并迭代它们,分别打印每个字符串。
for(auto& element : myMap)
{
std::cout << "Key: {" << element.first.first << ", " << element.first.second << "}\n";
std::cout << "Value is a vector with the following strings: \n";
for(auto& str: element.second)
std::cout << str << std::endl;
}
答案 2 :(得分:0)
如果您想按键打印而不是迭代矢量,那么您可以将地图声明为&#34; std :: map,string&gt; MYMAP 强>&#34 ;.然后,您可以对代码进行以下修改,如下所示。
int main() {
vector<string>value;
std::map<std::pair<string,string>,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)]+=MyvectorValue;
myMap[std::make_pair(input1,input2)]+= " ";
}
for( auto it = myMap.begin(); it != myMap.end(); ++it ) {
std::string& value = it->second;
cout<<value<<endl;
}
}