C++第5章 STL应用
2013-06-22 10:37
459 查看
//STL有三大核心部分,容器(Container)、算法(Algorithms)、迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有其他STL其他标准组件。通俗讲://容器:就像装东西的容器,STL里的容器,是可容纳一些数据的模板类。//算法:就是容器里的东西。STL里的算法,就是处理容器里面数据的方法。//迭代器:是容器的管理员。STL里的迭代器:用来遍历容器中数据对象。对存储于容器的数据进行处理时,迭代器能从一个成员移向另一个成员。它能按预先定义的顺序在某些容器中的成员间移动。
//STL简介//STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现在虽说它主要在C++中。但在被引入C++之前,该技术就已经存在了很长时间了。//在C++标准库中,STL被组织为下面13个头文件:
//1#include <algorithm> 算法//2#include <deque> 双端队列容器//3#include <functional> 运算函数(代替运算符)//4#include <iterator> 向量//5#include <vector> 动态数组容器//6#include <list> STL 线性列表容器//7#include <map> STL映射容器//8#include <memory> 给容器、管理内存的函数和auto_ptr模板类定义标准内存分配器//9#include <numeric> 在数值序列上定义一组一般数学操作。//10#include <queue> 队列容器//11#include <set> 集合容器//12#include <stack> 堆栈容器//13#include <utility> 通用模板类
字符串
代码下载地址: http://pan.baidu.com/share/link?shareid=1247823885&uk=3189484501
向量1、向量的初始化方式:
代码下载地址:http://pan.baidu.com/share/link?shareid=3742353952&uk=3189484501
2、向量主要成员函数的使用:
2、向量主要成员函数的使用代码下载地址:http://pan.baidu.com/share/link?shareid=312142971&uk=3189484501
队列
代码下载: http://pan.baidu.com/share/link?shareid=222282222&uk=3189484501
链表
代码下载:
http://pan.baidu.com/share/link?shareid=812483902&uk=3189484501
//STL简介//STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现在虽说它主要在C++中。但在被引入C++之前,该技术就已经存在了很长时间了。//在C++标准库中,STL被组织为下面13个头文件:
//1#include <algorithm> 算法//2#include <deque> 双端队列容器//3#include <functional> 运算函数(代替运算符)//4#include <iterator> 向量//5#include <vector> 动态数组容器//6#include <list> STL 线性列表容器//7#include <map> STL映射容器//8#include <memory> 给容器、管理内存的函数和auto_ptr模板类定义标准内存分配器//9#include <numeric> 在数值序列上定义一组一般数学操作。//10#include <queue> 队列容器//11#include <set> 集合容器//12#include <stack> 堆栈容器//13#include <utility> 通用模板类
字符串
#include <iostream> //string类简介 //C++兼容C对字符串的处理方式,与此同时还在标准库(STL)中提供了string类,可以很容易的使用string类对字符传进行操作。 //先引入头文件 #include <string> using namespace std; int main(int argc, const char * argv[]) { //字符串初始化 string name = "jiaoshenmene"; //字符串赋值 string str2; str2.assign("xiaonan"); cout<<str2<<endl; //字符串处理 字符串拼接 name += str2; cout<<name<<endl; //字符串长度 cout<<"字符串长度 = "<<name.length()<<endl; return 0; }
代码下载地址: http://pan.baidu.com/share/link?shareid=1247823885&uk=3189484501
向量1、向量的初始化方式:
#include <iostream> using namespace std; //向量 //需要加头文件#include <vector> vector 是一种动态数组,是基本数组的类模板。其内部定义了很多基本操作。既然这是一个类,那么它就会有自己的构造函数。vector类中定义了4种构造函数: //1、默认构造函数,构造一个初始长度为0的空向量,例如:vector<int> v1; //2、形式例如:vector<int> v2(5,10); 意思是向量中有5个元素。数值为10; //3、形式例如:vector<int> v3(v2); 将向量v2复制到v3 //4、形式例如:vector<int> v4(ar,ar+3);第一个参数:数组开始的位置,第二个参数数组结束的位置 #include <vector> int main(int argc, const char * argv[]) { //第一种初始化方式 vector<int> v1; //第二种初始化方式 vector<int> v2(5,10); cout<<v2.size()<<endl; //第三种初始化的方式 vector<int> v3(v2); cout<<v3.size()<<endl; //第4中初始化方式 int ar[3] = {12,43,54}; vector<int> v4(ar,ar+3); for (int i = 0; i <3; i++) { cout<<v4[i]<<endl; } return 0; }
代码下载地址:http://pan.baidu.com/share/link?shareid=3742353952&uk=3189484501
2、向量主要成员函数的使用:
#include <iostream> #include <vector> using namespace std; int main(int argc, const char * argv[]) { //初始化一个空的向量对象 v1 vector<int> v1; //初始化一个向量对象 其内容包含10个元素,值为6; vector<int> v2(10,6); //利用复制初始化方式,将向量v2中从开始的数值到第三个数值复制给v3. vector<int> v3(v2.begin(),v2.begin() + 3); //显示v3中的数据 for (int i =0; i < v3.size(); i++) { cout<<v3[i]<<endl; } cout<<"----------"<<endl; //添加数据的方法 v3.push_back(2); //下面的循环要4次,因为刚才添加了一个新的数据2 在最后 for (int i =0; i < v3.size(); i++) { cout<<v3[i]<<endl; } cout<<"----------"<<endl; v3.insert(v3.begin(), 4); for (int i =0; i < v3.size(); i++) { cout<<v3[i]<<endl; } cout<<"----------"<<endl; //取向量值的方法 cout<<"取第一个成员 = "<<v3.front()<<endl; cout<<"取最后一个成员 = "<<v3.back()<<endl; cout<<"取指定位置的成员,这里取第3个 = "<<v3.at(3)<<endl; cout<<"----------"<<endl; //删除成员 v3.pop_back(); // 将最后一个成员移除 v3.erase(v3.begin() + 1, v3.end());//删除成员 第一个参数指定开始位置 第二个参数结束的位置。 for (int i =0; i < v3.size(); i++) { cout<<v3[i]<<endl; } cout<<"----------"<<endl; //赋值函数 这里我们又重新给v3赋值了。 v3.assign(3, 2); for (int i =0; i < v3.size(); i++) { cout<<v3[i]<<endl; } return 0; }
2、向量主要成员函数的使用代码下载地址:http://pan.baidu.com/share/link?shareid=312142971&uk=3189484501
队列
using namespace std; //队列是一种先进先出的排列,使用时需要包含头文件 #include <queue> int main(int argc, const char * argv[]) { deque<int> deq1;//初始化一个空队列 //给队列赋值 队列中有5个值为6的成员 deq1.assign(5, 6); cout<<"显示队列中的数据--------------------"<<endl; //显示队列中的数据 for (int i = 0;i < deq1.size(); i++) { cout<<deq1[i]<<endl; } cout<<"在队列的尾部加入数据--------------------"<<endl; //在队列的尾部加入数据 deq1.push_back(4); //显示队列中的数据 for (int i = 0;i < deq1.size(); i++) { cout<<deq1[i]<<endl; } cout<<"在队列头部加入数据--------------------"<<endl; //在队列头部加入数据 deq1.push_front(9); //显示队列中的数据 for (int i = 0;i < deq1.size(); i++) { cout<<deq1[i]<<endl; } cout<<"在队列中指定的位置加入数据--------------------"<<endl; //在队列中指定的位置加入数据,其中deq1.begin()代表队列的开始, deq1.insert(deq1.begin()+ 1,7); //显示队列中的数据 for (int i = 0;i < deq1.size(); i++) { cout<<deq1[i]<<endl; } cout<<"从队列尾部删除--------------------"<<endl; //删除方法 //从队列尾部删除 deq1.pop_back(); //显示队列中的数据 for (int i = 0;i < deq1.size(); i++) { cout<<deq1[i]<<endl; } cout<<"从队列的头部删除--------------------"<<endl; //从队列的头部删除 deq1.pop_front(); //显示队列中的数据 for (int i = 0;i < deq1.size(); i++) { cout<<deq1[i]<<endl; } cout<<"在队列中删除指定位置的数据--------------------"<<endl; //在队列中删除指定位置的数据 deq1.erase(deq1.begin() +1); //显示队列中的数据 for (int i = 0;i < deq1.size(); i++) { cout<<deq1[i]<<endl; } cout<<"--------------------"<<endl; return 0; }
代码下载: http://pan.baidu.com/share/link?shareid=222282222&uk=3189484501
链表
#include <list> #include <iterator> using namespace std; //List (链表),是一种双线性列表,只能顺序访问(从前向后或者从后向前),使用时需 int main(int argc, const char * argv[]) { list<int> list1,list2; list<int> ::iterator listIterator; list1.push_back(123); list1.push_back(23); cout<<"查看数据-------------"<<endl; for (listIterator = list1.begin(); listIterator != list1.end(); ++listIterator) { cout<<*listIterator<<endl; } cout<<"排序后-------------"<<endl; //sort()排序 list1.sort(); for (listIterator = list1.begin(); listIterator != list1.end(); ++listIterator) { //使用遍历器方式,*listIterator是指针间接形式,它的意思是it所指向的元素值。 cout<<*listIterator<<endl; } list2.push_back(54); list2.push_back(34); // list1.merge(list2); //链表并接 第一个参数的意思是拼接的位置list1.end()指的是将list2接到list1的尾部 list1.splice(list1.begin(), list2); cout<<"拼接后-------------"<<endl; for (listIterator = list1.begin(); listIterator != list1.end(); ++listIterator) { cout<<*listIterator<<endl; } return 0; }
代码下载:
http://pan.baidu.com/share/link?shareid=812483902&uk=3189484501
相关文章推荐
- STL 在 C++ 中的应用
- 【C++ STL应用与实现】12: 如何使用std::stack
- 【C++ STL应用与实现】86: 如何使用std::accumulate
- C++ STl队列、栈应用
- C++STL技术原理浅析与应用基础之vector
- C++ STL-stack栈的应用
- 【C++ STL应用与实现】13: 如何使用std::queue和std::priority_queue
- c++STL的stack的应用之括号匹配
- C++STL库中map容器常用应用
- C++ 标准模板库STL 优先级队列 priority_queue 使用方法与应用介绍(一)
- C++基础::非类型模板参数在STL中的应用
- c++高级应用(模板)(STL)(模板嵌套)
- 【C++ STL应用与实现】17: 如何使用迭代器辅助函数
- C++中的set(STL的应用部分)
- C++ 标准模板库STL 双向链表 list 使用方法与应用介绍(一)
- The kth great number(C++ stl multiset的应用)
- c++STL数据结构之优先队列queue应用
- C++ STL 基础及应用(5) 字符串
- 【C++ STL应用与实现】5: 如何使用std::array (since C++11)
- C++中STL容器的find的应用