/**

* K1:---------------------list的相关API------------------------------

*

* list lstT;//list采用采用模板类实现,对象的默认构造形式:

list(beg,end);//构造函数将[beg, end)区间中的元素拷贝给本身。

list(n,elem);//构造函数将n个elem拷贝给本身。

list(const list &lst);//拷贝构造函数。

3.6.4.2 list数据元素插入和删除操作

push_back(elem);//在容器尾部加入一个元素

pop_back();//删除容器中最后一个元素

push_front(elem);//在容器开头插入一个元素

pop_front();//从容器开头移除第一个元素

insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置。

insert(pos,n,elem);//在pos位置插入n个elem数据,无返回值。

insert(pos,beg,end);//在pos位置插入[beg,end)区间的数据,无返回值。

clear();//移除容器的所有数据

erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置。

erase(pos);//删除pos位置的数据,返回下一个数据的位置。

remove(elem);//删除容器中所有与elem值匹配的元素。

3.6.4.3 list大小操作

size();//返回容器中元素的个数

empty();//判断容器是否为空

resize(num);//重新指定容器的长度为num,

若容器变长,则以默认值填充新位置。

如果容器变短,则末尾超出容器长度的元素被删除。

resize(num, elem);//重新指定容器的长度为num,

若容器变长,则以elem值填充新位置。

如果容器变短,则末尾超出容器长度的元素被删除。

3.6.4.4 list赋值操作

assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。

assign(n, elem);//将n个elem拷贝赋值给本身。

list& operator=(const list &lst);//重载等号操作符

swap(lst);//将lst与本身的元素互换。

3.6.4.5 list数据的存取

front();//返回第一个元素。

back();//返回最后一个元素。

3.6.4.6 list反转排序

reverse();//反转链表,比如lst包含1,3,5元素,运行此方法后,lst就包含5,3,1元素。

sort(); //list排序

*

*

*/

/**

* K2:----------------list的细节----------------------------

* 1.sort排序,需要传入二元比较函数.或者仿函数.

* 注意点:JAVA中的compare返回的是int,这里返回的是bool.

*

* 2.remove 自定义结构体,需要重写operator== 的二元函数.

*

*/

/**

* K3:-------------------set的使用--------------------------

*

* 1.自定义类型的class,需要传入仿函数的比较器.bool operator()(const T1&,consrT2&),public修饰.

* 或者重写类内部的< 重载符.

*

* 2.移除自定义的类,需要重写operator==的二元函数.

*

*

*

* set构造函数

set st;//set默认构造函数:

mulitset mst; //multiset默认构造函数:

set(const set &st);//拷贝构造函数

3.7.2.2 set赋值操作

set& operator=(const set &st);//重载等号操作符

swap(st);//交换两个集合容器

3.7.2.3 set大小操作

size();//返回容器中元素的数目

empty();//判断容器是否为空

3.7.2.4 set插入和删除操作

insert(elem);//在容器中插入元素。

clear();//清除所有元素

erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。

erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。

erase(elem);//删除容器中值为elem的元素。

*

*

*/

/**

*

* K4:----------------迭代器补充--------------------

* vector::iterator pStart = v.begin(); //vector 容器提供了 begin()方法 返回指向第一个元素的迭代器

vector::iterator pEnd = v.end(); //vector 容器提供了 end()方法 返回指向最后一个元素下一个位置的迭代器

* 并不是最后一个,而是最后一个的下一个.......

*

*

*/

/**

*

* K5:------------- == < 仿函数,谓词的总结:------------

* **都要注意加const修饰**

* bool operator==(const T &t)const 是用于remove的时候调用.

* bool operator

* 仿函数 也是用于比较排序的时候调用. bool operator()(const T&t1,const T &t2)const ;

*

* 这个无法加const

* 或者写一个全局函数. bool compare(const T&t1,const T &t2)

*

* 1、函数对象通常不定义构造函数和析构函数,所以在构造和析构时不会发生任何问题,避免了函数调用的运行时问题。

* 2、函数对象超出普通函数的概念,函数对象可以有自己的状态

* 3、函数对象可内联编译,性能好。用函数指针几乎不可能

* 4、模版函数对象使函数对象具有通用性,这也是它的优势之一

*

*

*/

//仿函数

class SetCompare {

public:

bool operator()(const SetPerson &p1, const SetPerson &p2) const {

return p1.age > p2.age;

}

};

//重载< 用于排序

class MapPerson {

public:

int age;

bool operator

return this->age < p.age;

}

};

//重载== 用于比较删除

class ThreePerson {

public:

int age;

ThreePerson() {

}

ThreePerson(int age) {

this->age = age;

}

bool operator==(const ThreePerson &person) const {

return person.age == this->age;

}

~ThreePerson() {

cout << "destroy------------" << endl;

}

};

//普通函数

bool comparePerson(const ThreePerson &p1, const ThreePerson &p2) {

return p2.age > p1.age;

}

//map的使用

void printMap(map map1) {

for (auto it = map1.begin(); it != map1.end(); ++it) {

cout << "map's age: " << it->second << endl;

}

}

void useThreeState2() {

map map1;

auto var1 = map1.insert(make_pair(MapPerson(), "July"));

auto var2 = map1.insert(make_pair(MapPerson(), "Lucy"));

map1.insert(make_pair(MapPerson(), "LiLei"));

printMap(map1);

cout<

cout<

}

java vector pair_STL: list ,set ,pair.map的使用相关推荐

  1. java vector pair_C++ vector中使用pair 及 pair的基本用法总结(转)

    pair的基本用法总结 1.pair的应用 pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当一个函数 ...

  2. java中list,set,map集合的区别,及面试要点

    Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...

  3. C++:vector容器中使用pair该如何访问成员

    (显然,vector 的索引从 0 开始,这和普通数组一样.通过使用索引,总是可以访问到 vector 容器中现有的元素.) 如果是简单的访问vector里边的成员的话,是这样的: #include ...

  4. java使用集合存储过程_详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map 发布于 2020-5-1| 复制链接 摘记: 详解java调用存储过程并封装成map           本文代码中注释写的比较清楚不在单独说明,希望能帮助到大 ...

  5. java 三种将list转换为map的方法详解

    这篇文章主要介绍了java 三种将list转换为map的方法详解的相关资料,需要的朋友可以参考下 java 三种将list转换为map的方法详解 在本文中,介绍三种将list转换为map的方法: 1) ...

  6. Java Vector API的使用测试

    Java Vector API的使用测试 Vector API ​ Vector API 是Java18开始引入的一个项目(JEP 417),通过引入该API来表达向量运算,该计算在运行时可靠地编译为 ...

  7. java进阶开发-----Set集合、Map集合(接java集合)

    (一).Set系列集合 Set系列集合特点 无序:存取顺序不一致 不重复:可以去除重复 无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素. Set集合实现类特点 Ha ...

  8. Java进阶,Set集合,Map集合

    Java进阶,Set集合,Map集合 一.Set系列集合 1.Set系列集系概述 Set系列集合特点 无序:存取顺序不一致 不重复:可以去除重复 无索引:没有带索引的方法,所以不能使用普通for循环遍 ...

  9. Java 读取 JSON 文件转成 Map 对象

    Java 读取 JSON 文件转成 Map 对象 应用场景 待读取的外部 JSON 文件 Java 代码 读取结果 Gson 应用场景 Jar 包或 War 包引用一个外部文件作为项目运行的配置文件 ...

  10. java 不区分KEY大小写的MAP

    java 不区分KEY大小写的MAP 2015-01-15 14:16:54|  分类: 默认分类|举报|字号 订阅 下载LOFTER 我的照片书  | 关键字:忽略key大小写的map 有时候我们会 ...

最新文章

  1. Spring Boot 2.X 实现文件上传(三)
  2. 【LeetCode-704 | 二分查找】
  3. Python Django CBV下的通用视图函数
  4. 机器学习算法精讲20篇(一)-k-means聚类算法应用案例(附示例代码)
  5. mysql 社区版 innodb_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
  6. C#锐利体验-第八讲 索引器与操作符重载(转)
  7. java 不编译咋办_java – 为什么JVM不编译整个程序,而不是逐个编译?
  8. 山羊与汽车游戏的实验算法
  9. [转贴] 从零开始学C++之异常(二):程序错误、异常(语法、抛出、捕获、传播)、栈展开...
  10. 教你轻松截获 Selenium 中的 Ajax 数据
  11. Delphi各个版本的官方下载地址,还在等机会
  12. BLUES吉他学习笔记005 bluesrv[9]
  13. 初中数学503个必考知识点_高考数学必考知识点高中数学重点知识归纳
  14. matlab相机标定工具箱讲解,matlab 相机标定工具箱
  15. 作用域链与原型链的区别
  16. S@Kura的PHP进阶之路(五)
  17. Activity界面的加载和绘制
  18. 很有哲理的句子,每天都值得看一遍
  19. 刷脸时代:勿信谣言,告诉你真实的刷脸支付系统
  20. ROS自定义消息类型,编译无法生成 msg/srv 文件产生的头文件

热门文章

  1. pod BaiduMapKit 报错解决方案
  2. 利用反射将IDataReader读取到实体类中效率低下的解决办法
  3. 学习python第七天
  4. TCPClient例子(3)基于委托和事件的TcpHelper程序
  5. linux服务器MySQL数据从磁盘拷贝以及恢复
  6. Linux命令_搜索文件
  7. Tensorflow自编码器及多层感知机
  8. git rebase 和 merge的区别
  9. 【转】 叫人起床的学问
  10. 边相关扫描线填充算法