关联容器(map):支持高效查找的容器,一种键值对的集合。
#include <iostream>
#include <string>
#include <map>
#include <vector> using namespace std; //根据空格等将字符串,拆分成多个单词。
vector<string> split(const string& s)
{
vector<string> ret;
typedef string::size_type string_size;
string_size i=; while(i!=s.size())
{
while(i!=s.size() && isspace(s[i]))
{
++i;
}
string_size j=i;
while(j!=s.size() && !isspace(s[j]))
{
++j;
}
if(i!=j)
{
ret.push_back(s.substr(i,j-i));
i=j;
}
}
return ret;
} //得到一个单词为键,所在行的序列为值的一个关联容器集合
map<string,vector<int> > xref(istream & in,vector<string> find_words(const string&)=split)
{
string line;
int line_number=; map<string,vector<int> > ret; while(getline(in,line)) //读取分隔每一行的输入
{
++line_number;
vector<string> words=find_words(line);//找每一行单词的集合。 for(vector<string>::const_iterator it=words.begin();it!=words.end();++it)
{
ret[*it].push_back(line_number); //*it:一个单词
}
}
return ret;
} int main()
{
map<string ,vector<int> > ret=xref(cin);
for(map<string,vector<int> >::const_iterator it=ret.begin();it!=ret.end();++it)
{
cout<<it->first <<"在行:"; //输出一个单词
vector<int>::const_iterator line_it=it->second.begin();
cout<<*line_it; ++line_it;
while(line_it!=it->second.end())
{
cout<<","<<*line_it;
++line_it;
}
cout<<endl;
}
return ;
}
关联容器(map):支持高效查找的容器,一种键值对的集合。的更多相关文章
- C++ 之关联容器 map
标准库定义了四种关联容器:map是其中之一(另外还有set.multimap.multiset).map的元素以键-值(key-value),在学了顺序容器之后,再学习关联容器,就比较比较好理解了. ...
- 容器--Map和AbstractMap
一.前言 前面我们介绍了Collection接口的定义及一系列实现,并重点介绍了List体系下的一些实现,对于Collection来说,其实还有Set系列同样很重要,但由于Set是依赖于Map实现的, ...
- STL容器 -- Map
核心描述: map 就是从键(key) 到 值(value) 的一个映射.且键值不可重复,内部按照键值排序. 头文件: #include <map> 拓展: multimap 是一个多重映 ...
- ECMA Script 6_唯一容器 Set_映射容器 Map
唯一容器 Set ES6 提供了新的数据结构 Set Set 结构没有键名,只有键值(或者说 键名 和 键值 是同一个值) 它类似于数组,但是成员的值都是唯一的,没有重复的值 Set 内部判断两个值是 ...
- Java 容器 & 泛型:一、认识容器
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 容器是Java语言学习中重要的一部分.泥瓦匠我的感觉是刚开始挺难学的,但等你熟悉它,接触多了,也就“顺 ...
- 各种Map的区别,想在Map放入自定义顺序的键值对
今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map 在讲解Map排 ...
- Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值
package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...
- Java基础知识强化之集合框架笔记53:Map集合之Map集合的遍历 键值对对象找键和值
1. Map集合的遍历(键值对对象找键和值) Map -- 夫妻对 思路: A: 获取所有结婚证的集合 B: 遍历结婚证的集合,得到每一个结婚证 C: 根据结婚证获取丈夫和妻子 转换: A: ...
- Java Map 键值对排序 按key排序和按Value排序
一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...
随机推荐
- thinkphp的model模型的设计经验总结
关于模型:跟上篇文章thinkphp的目录结构设计经验总结写控制器一个道理:为了尽量避免改动到框架: 首先我们是要有一个BaseModel.class.php作为我们的基础model: 我会在Base ...
- 使用Java7提供的Fork/Join框架
http://blog.csdn.net/a352193394/article/details/39872923 使用Java7提供的Fork/Join框架 2014-10-07 23:55 4818 ...
- text-size-adjust的值为100% 代替值 none
iPhone 横屏默认会放大文字,设置text-size-adjust会解决这个问题 一般用text-size-adjust:none 但建议用100%代替none text-size-adjust: ...
- viewpager处理(一):让viewpager不能滑动
1.实现原理: 自定义viewpager,重写onTouchEvent方法,什么触摸事件都不响应即可让viewpager不能滑动. 2.代码如下 public class NoScrollViewPa ...
- 为什么要在onNewIntent的时候要显示的去调用setIntent
一.原因: 当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIn ...
- nextSibling,previousSibling,childNodes常见错误
在使用nextSibling与previousSibling时,常出现选不到预计对象的情况 eg: <div class="a">1</div> <d ...
- phpstudy 安装memcached服务和memcache扩展
memcached安装步骤: 首先,将下载好的memcahed解压到某个文件目录下,例如 C:\memcached 然后,在cmd里,输入"C:\memcached\memcached.ex ...
- Shell命令替换与变量替换
命令替换 命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出.命令替换的语法: `command` 注意是反引号,不是单引号,这个键位于 Esc 键下方.下面的例子中,将命令执 ...
- java 线程的同步
Example12_7.java public class Example12_7 { public static void main(String args[]) { Bank bank = new ...
- Servlet与JSP的异同
1.什么是Servlet A Java servlet is a Java programming language program that extends the capabilities of ...