STL学习笔记-入门概念
2015-10-21 22:15
281 查看
1. 入门概念
STL最大的特点: 实现了算法和数据结构的有效分离
STL主要内容:算法(algorithm)、容器(container)、迭代器(iterator)
容器 -> 提供数据结构
算法 -> 按照实际问题,对数据进行处理
迭代器 -> 使得容器和算法进行无缝对接
实例感受:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Student{
public:
int age;
char name[64];
void printStuInfo() {
cout << "age : " << age << endl;
}
};
void main() {
//容器:将元素拷入到容器中
vector<int> v;
v.push_back(-1);
v.push_back(1);
v.push_back(2);
v.push_back(1);
//迭代器:相当于一个指针,能访问容器中的数据
for(vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
//算法: 统计容器中1的个数, 算法和迭代器能进行无缝的连接
int num = count(v.begin(), v.end(), 1);
cout << " num of 1 : " << num << endl;
//容器不仅可以装基本数据类型,还可以装复杂数据类型
Student s1, s2, s3;
s1.age = 18;
s2.age = 19;
s3.age = 20;
vector<Student *> stu;
stu.push_back(&s1);
stu.push_back(&s2);
stu.push_back(&s3);
for(vector<Student *>::iterator it = stu.begin(); it != stu.end(); it++) {
cout << (*it)->age << endl; // *it 才是 Student * 类型的
}
}
容器简介:
容器的分类:
序列式容器:每个元素位置固定,取决于插入的时机,与元素值无关。
如vector、deque、list、quene、stack、priority_quene
关联式容器:元素位置取决于特定的排序准则,和插入顺序无关。
如set、multiset、map、multimap
容器中的元素是按照值赋值的方式进行的,因此容器类模板的类型必须提供拷贝构造函数
容器不仅可以装基本数据类型,还可以装复杂数据类型
STL最大的特点: 实现了算法和数据结构的有效分离
STL主要内容:算法(algorithm)、容器(container)、迭代器(iterator)
容器 -> 提供数据结构
算法 -> 按照实际问题,对数据进行处理
迭代器 -> 使得容器和算法进行无缝对接
实例感受:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Student{
public:
int age;
char name[64];
void printStuInfo() {
cout << "age : " << age << endl;
}
};
void main() {
//容器:将元素拷入到容器中
vector<int> v;
v.push_back(-1);
v.push_back(1);
v.push_back(2);
v.push_back(1);
//迭代器:相当于一个指针,能访问容器中的数据
for(vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
//算法: 统计容器中1的个数, 算法和迭代器能进行无缝的连接
int num = count(v.begin(), v.end(), 1);
cout << " num of 1 : " << num << endl;
//容器不仅可以装基本数据类型,还可以装复杂数据类型
Student s1, s2, s3;
s1.age = 18;
s2.age = 19;
s3.age = 20;
vector<Student *> stu;
stu.push_back(&s1);
stu.push_back(&s2);
stu.push_back(&s3);
for(vector<Student *>::iterator it = stu.begin(); it != stu.end(); it++) {
cout << (*it)->age << endl; // *it 才是 Student * 类型的
}
}
容器简介:
容器的分类:
序列式容器:每个元素位置固定,取决于插入的时机,与元素值无关。
如vector、deque、list、quene、stack、priority_quene
关联式容器:元素位置取决于特定的排序准则,和插入顺序无关。
如set、multiset、map、multimap
容器中的元素是按照值赋值的方式进行的,因此容器类模板的类型必须提供拷贝构造函数
容器不仅可以装基本数据类型,还可以装复杂数据类型
相关文章推荐
- 设计模式之行为型模式 - 调用行为的传递问题
- 动易2006序列号破解算法公布
- Ruby中的迭代器详解
- Ruby中Block和迭代器的使用讲解
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua中的迭代器浅析
- Lua中的迭代器和泛型for介绍
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#特性-迭代器(上)及一些研究过程中的副产品
- C#冒泡法排序算法实例分析
- C#迭代器模式(Iterator Pattern)实例教程
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- STL区间成员函数及区间算法总结