1、容器
保存数据的(数据结构)
常用的数据结构:数组(array),链表(list),tree(树),栈(stack),队列(queue),集 合(set),映射表
(map),根据数据在容器中的排列特性,这些数据分为序列式容器和关联式容器两种。
序列式容器强调值的排序,序列式容器中的每个元素均有固定的位置,除非用删除或插入的
操作改变这个位置。Vector容器、Deque容器、List容器等。
关联式容器是非线性的树结构,更准确的说是二叉树结构。各元素之间没有严格的物理上
的顺序关系,也就是说元素在容器中并没有保存元素置入容器时的逻辑顺序。关联式容器另
一个显著特点是:在值中选择一个值作为关键字key,这个关键字对值起到索引的作用,方
便查找。Set/multiset容器 Map/mul┶map容器
2、算法
算法,问题之解法也。
以有限的步骤,解决逻辑或数学上的问题,这一门学科我们叫做算法(Algorithms)等
广义而言,我们所编写的每个程序都是一个算法,其中的每个函数也都是一个算法,毕竟它
们都是用来解决或大或小的逻辑问题或数学问题。STL收录的算法经过了数学上的效能分析
与证明,是极具复用价值的,包括常用的排序,查找等等。特定的算法往往搭配特定的数据
结构,算法与数据结构相辅相成。
算法分为:质变算法和非质变算法。
质变算法:是指运算过程中会更改区间内的元素的内容。例如拷贝,替换,删除等等
非质变算法:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极
值等
算法需要包含的头文件: algorithm
3、迭代器
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
#include <string>
#include <vector>
using namespace std;
void test01()
{
vector<int> v;//相当数组,
v.push_back(2);
v.push_back(4);
v.push_back(5);
v.push_back(3);
//若需要访问容器内的元素 需要拿到容器首元素的迭代器(指针)
vector<int>::iterator it_start = v.begin();//v.begin();获得指向首元素的迭代器接口
vector<int>::iterator it_end = v.end();// v.end();获得指向末尾的迭代器接口
for (; it_start != it_end; it_start++)
{
cout << *it_start << " ";
}
cout << endl;
}
int main()
{
test01();
return 0;
}
3-1、使用for_each遍历
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
#include <string>
#include <vector>
#include <algorithm>//算法要带上
using namespace std;
void print(int a)
{
cout<<a<<endl;
}
void test01()
{
vector <int> v;
v.push_back(2);
v.push_back(3);
v.push_back(5);
v.push_back(6);
vector<int>::iterator it_start = v.begin();
vector<int>::iterator it_end = v.end();
for_each(it_start, it_end, print);
}
int main()
{
test01;
return 0;
}