目录
1基本概念:
2 vector容器案例:
3string容器
4stack容器:
5Queue容器:(队列)
6list容器(链表):
7set容器(集合容器)
1基本概念:
- STL标准模板库
- STL从广义上分为1容器2算法3迭代器
- 容器和算法之间通过迭代器进行无缝衔接
- STL六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器
容器:
用最广泛的一些数据结构实现出来的
数组、链表、树、栈、队列、集合、映射表等
算法:这个都理解啊
就是分为质变和非质变
迭代器:
算法通过迭代器来访问容器中的元素
可以理解为迭代器就是指针
1:vector容器案例:
#include
using namespace std;
#include
int main()
{
vector v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
//通过迭代器访问容器中的数据;//类似于我定义一个并且将其赋值;
vector::iterator itbegin=v.begin();//起始迭代器 指向容器第一个元素
vector::iterator itend=v.end();//结束迭代器 指向容器最后一个元素下一个位置
while(itbegin!=itend)
{
cout<<*itbegin<<" ";
itbegin++;
}
//这是利用了迭代器
- STL标准模板库
- STL从广义上分为1容器2算法3迭代器
- 容器和算法之间通过迭代器进行无缝衔接
- STL六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器
容器:
用最广泛的一些数据结构实现出来的
数组、链表、树、栈、队列、集合、映射表等
算法:这个都理解啊
就是分为质变和非质变
迭代器:
算法通过迭代器来访问容器中的元素
可以理解为迭代器就是指针
#includeusing namespace std; #include int main() { vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); //通过迭代器访问容器中的数据;//类似于我定义一个并且将其赋值; vector ::iterator itbegin=v.begin();//起始迭代器 指向容器第一个元素 vector ::iterator itend=v.end();//结束迭代器 指向容器最后一个元素下一个位置 while(itbegin!=itend) { cout<<*itbegin<<" "; itbegin++; } //这是利用了迭代器
#includeusing namespace std; #include #include//标准算法的头文件 void my_print(int val) { cout< v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); //通过迭代器访问容器中的数据;//类似于我定义一个并且将其赋值; // vector ::iterator itbegin=v.begin();//起始迭代器 指向容器第一个元素 // vector ::iterator itend=v.end();//结束迭代器 指向容器最后一个元素下一个位置 // while(itbegin!=itend) // { // cout<<*itbegin<<" "; // itbegin++; // } for_each(v.begin(), v.end(), my_print); } //利用STL的算法;
2:string容器
1:拼接:
#includeusing namespace std; #include #include//标准算法的头文件 #include int main() { string str1; string str2; str1="woai"; // str2="youxi"; // str1+=str2; // cout< 2:查找和替换:
#includeusing namespace std; #include #include//标准算法的头文件 #include int main() { string str1; string str2; // str1="woai"; // str2="youxi"; // // str1+=str2; // // cout< using namespace std; #include #include//标准算法的头文件 #include int main() { string str1; string str2; str1="I love You"; str1.replace(0,1,"yushqi");// 从0号字符起1个字符替换为“yushiqi” cout< 先不学string和vector了我现在要用其他的以后学了再补充
stack容器:
#includeusing namespace std; #include #include//标准算法头文件 #include int main() { stack stk; stk.push(10); stk.push(40); stk.push(30); stk.push(20);//入栈 while(!stk.empty())//判断栈空空返回1; { cout<
Queue容器:(队列)
#include#include #include using namespace std; int main() { queue Q; int i; for(i=0;i<3;i++) { Q.push(i+5.3); } while(!Q.empty())//判断队列为不为空 { cout< list容器(链表):
#include#include #include using namespace std; #include void print_list(list
&l1) { for(list ::iterator it=l1.begin();it!=l1.end();it++) { cout<<*it<<" "; } } int main() { //防止修改容器加const; //构造链表有好几种形式: //默认构造 list l1; int i=0; for(;i<3;i++) { l1.push_back(i+10); } print_list(l1);//遍历l1 //区间构造 list l2(l1.begin(),l1.end()); print_list(l2); //拷贝构造: list l3(l1); print_list(l3); cout< #include#include #include using namespace std; #include void print_list(const list
&l1)//加const是防止l1被修改; { for(list ::const_iterator it=l1.begin();it!=l1.end();it++) { cout<<*it<<" "; } cout< l1; int i=1; for(;i<5;i++) { l1.push_back(i+20); } print_list(l1); list l2;list l3;list l4; l2=l1; print_list(l2); l3.assign(l2.begin(),l2.end()); print_list(l3); l4.assign(10,100); print_list(l4);//这些都是赋值操作; l1.swap(l4); print_list(l1); print_list(l4);//链表的交换 } #include#include #include using namespace std; #include void print_list(const list
&l1)//加const是防止l1被修改; { for(list ::const_iterator it=l1.begin();it!=l1.end();it++) { cout<<*it<<" "; } cout< l1; int i=0; for(;i<4;i++) { l1.push_back(i+20);//尾插法; } print_list(l1); cout< #include#include #include using namespace std; #include void print_list(const list
&l1)//加const是防止l1被修改; { for(list ::const_iterator it=l1.begin();it!=l1.end();it++) { cout<<*it<<" "; } cout< l1; int i=0; for(;i<4;i++) { l1.push_back(i+20);//尾插法; } print_list(l1); l1.push_front(100);//头插; print_list(l1); l1.pop_back();//尾删;; print_list(l1); l1.pop_front(); print_list(l1); //头删; //插入; list ::iterator it=l1.begin();//先给一个迭代器移动然后插入 l1.insert(++it,130); l1.insert(++it,130);l1.insert(++it,130); print_list(l1); //移除: l1.remove(130); print_list(l1); //清空: l1.clear(); print_list(l1); } #include#include #include using namespace std; #include void print_list(const list
&l1)//加const是防止l1被修改; { for(list ::const_iterator it=l1.begin();it!=l1.end();it++) { cout<<*it<<" "; } cout< l1; int i=0; for(;i<5;i++) { l1.push_back(i+10); } // cout< l2; l2.push_back(10); l2.push_back(90); l2.push_back(100); l2.push_back(80); print_list(l2); l2.sort();//默认是升序; print_list(l2); // l2.sort(); } set容器(集合容器)
void print_set(set&s) { for(set ::iterator it=s.begin();it!=s.end();it++) { cout<<(*it)<<" "; } cout< s; s.insert(10); s.insert(230);//set容器的插入 s.insert(23); s.insert(30); print_set(s); set s1; if(!s.empty())//判断是否为空 { cout<<"s不为空"< ::iterator pos=s.find(230);//fing返回一个迭代器并且没找到的话输出的是末尾迭代器 if(pos==s.end()) { cout<<"meizhaodao"< p=make_pair("yushiqi",18); cout< map容器、string、vector后续在更



