
STL
新一下的兰天
紧要关头不放弃,绝望就会变成希望
展开
-
STL之string
一、string类型的初始化MSDN上列出的所有String的构造函数: 感觉这里应该少了一种String(int32, char)这个构造函数,例子中会给出的:#include<iostream>#include<string>using namespace std;int main() { char a[11] = "helloworld"; char *p = a;原创 2016-06-25 10:38:22 · 2688 阅读 · 0 评论 -
非修改性序列算法之mismatch
mismath是比较两个容器元素的不同的一个函数,会找到第一个不同的元素,函数形式有两种:第一种:template<class _InIt1, class _InIt2> inline pair<_InIt1, _InIt2> mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)第二种:原创 2016-08-14 19:10:38 · 465 阅读 · 0 评论 -
非修改性序列算法之min_element和max_element
min_element是求容器中的最小值,有两种函数重载:第一种,单纯的比较大小:template<class _FwdIt> inline _FwdIt min_element(_FwdIt _First, _FwdIt _Last)第二种,按照函数要求比较大小,可以是普通的比较函数,也可以是仿函数:template<class _FwdIt, class _Pr> inline原创 2016-08-14 18:14:49 · 2456 阅读 · 0 评论 -
非修改性序列算法之count和count_if
count主要用来统计容器内元素个数,其格式有两种:第一种,第三个参数为元素值template<class _InIt, class _Ty> inline typename iterator_traits<_InIt>::difference_type count(_InIt _First, _InIt _Last, const _Ty& _Val)第二种,第三个参原创 2016-08-14 17:37:42 · 496 阅读 · 0 评论 -
非修改性序列算法之for_each
for_each是algorithm头文件包含的stl算法之一。一、for_each的使用#include<iostream>#include<vector>#include<algorithm>using namespace std;template<typename T>int pushNum(T &vec, int first, int last) { int ret = 0;原创 2016-08-14 11:10:42 · 354 阅读 · 0 评论 -
STL之vector的内存
一、vector内存分配 先给个例子:#include<iostream>#include<vector>using namespace std;int main() { vector<int> vi; for (int i = 0; i < 10; i++) { vi.push_back(i); cout << "size: " << vi.si原创 2016-06-17 20:48:34 · 582 阅读 · 0 评论 -
C++之模板
模板主要应用于泛型编程,现在主要就是非常火的STL(标准模板库),对于公司项目来说利用模板的可能性不大,一般一个项目是无法达到模板这个要求的。一、函数模板函数模板的要求是:1、函数名一致 2、参数个数一致 3、函数体一致 4、参数类型不同函数模板的格式:template<class/typename T1, class/typename T2, ...>返回类型 函数名(参数列表){原创 2016-06-17 16:31:44 · 282 阅读 · 0 评论 -
STL之multiset
multiset同set相似,唯一的不同就是set中的元素是唯一的,multiset对于同一值可以出现多次,直接就给个基本操作的例子:void func1() { multiset<int> ms; int temp; cout << "请输入值:"; cin >> temp; while (temp != 0) { ms.insert(tem原创 2016-06-27 09:09:31 · 285 阅读 · 0 评论 -
STL之set
1、set是集合容器,其中的元素是唯一的,集合中元素按一定的顺序排序,元素的插入是按照排序规则进行插入的,所以不能指定插入位置;2、set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树,再插入与删除操作上比vector快3、set不能采用[]或者at()的方式访问数据,也不能按[]的方式插入数据;一、set的基本操作void print(set<int>& s) { set<int>::原创 2016-06-27 08:46:38 · 684 阅读 · 0 评论 -
STL之priority_queue
priority_queue是优先级队列,主要应用于需要自动排序的情况,比如录入成绩。一、priority_queue的基本操作#include<iostream>#include<queue>#include<functional>using namespace std;void func1() { priority_queue<int> pq1; priority_queue原创 2016-06-26 20:09:21 · 276 阅读 · 0 评论 -
STL之list
list是双向链表容器一、list的基本操作#include<iostream>#include<list>using namespace std;void print(list<int>& l) { list<int>::iterator it = l.begin(); while (it != l.end()) { cout << *it << " ";原创 2016-06-26 19:38:27 · 225 阅读 · 0 评论 -
STL之vector容器
vector容器是一种动态数组,其本质的实现就是数组。一、vector对象的默认构造vector<int> v1;vector<char> v2;vector<string> v3;vector<CA*> v4; //CA是自定义类vector<CA> v5; //CA是自定义类型vector是一种模板类,可以接受各种数据类型,需要注意的是,对于vector<CA> v5;对于原创 2016-06-26 15:55:56 · 384 阅读 · 0 评论 -
STL之deque
deque是双端数组,跟vector类似,只不过多了从头部添加和删除的操作,直接上例子:1、deque的基本操作#include<iostream>#include<deque>using namespace std;void print(deque<int>& d) { deque<int>::iterator it = d.begin(); for (; it != d.end原创 2016-06-26 17:10:53 · 295 阅读 · 0 评论 -
非修改性序列之lexicographical_compare
lexicographical_compare函数是用来比较两个容器的大小,包括元素和个数,他的原则是这样的:1、一次比较两个容器中的元素,若遇到第一个不同的元素,则根据元素的大小决定容器的大小2、当两个容器元素都相同,个数不同时,若第一个容器个数小于第二个容器的元素个数,则第一个容器小于第二个容器3、元素个数与元素都相等时,两个容器相等,函数返回false只有当第一个容器小于第二个容器时,lexi原创 2016-08-14 19:59:30 · 836 阅读 · 0 评论