#include<iostream>
#include<string>
#include<list>
#include<map>
int main()
{
std::map<std::string, std::list<int>> words;
std::string word;
int temp;
while (std::cin>>word)
{
std::list<int> lst;
while (std::cin>>temp)
{
lst.emplace_back(temp);
}
words.insert(std::pair<std::string, std::list<int>>(word, lst));
}
for (const auto &a : words)
{
std::cout << a.first << "\n";
for (const auto &b : a.second)
{
std::cout << b << " ";
}
std::cout << std::endl;
}
}
设想用户输入时可以这样输入:
a 1 2 3 4 5
b 1 2 3 4 5
输出时为:
a
1 2 3 4 5
b
1 2 3 4 5
但是在实际使用的时候输出为
a
1 2 3 4 5
请问是什么原因,该怎么改进呢
[C++]向map中插入数据,关键字为string,值为list<int>
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- s_listening 2017-07-29 08:42关注
cin在读取int时来了一个char字符,使输入状态变成fail,后面就不能输入了,重置一下输入状态就好
#include<iostream> #include<string> #include<list> #include<map> int main() { std::map<std::string, std::list<int>> words; std::string word; int temp; while (std::cin>>word) { std::list<int> lst; while (std::cin>>temp) { lst.emplace_back(temp); } if(!std::cin.eof()) std::cin.clear(); words.insert(std::pair<std::string, std::list<int>>(word, lst)); } for (const auto &a : words) { std::cout << a.first << "\n"; for (const auto &b : a.second) { std::cout << b << " "; } std::cout << std::endl; } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
- ¥15 电力市场出清matlab yalmip kkt 双层优化问题
- ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
- ¥20 matlab yalmip kkt 双层优化问题