容器:放东西用的
STL容器就是将运用最广泛的一些数据结构实现出来
常用的数据结构有:数组,链表,树,栈,队列,集合,映射表等
这些容器分为序列式容器和关联式容器两种:
算法:问题的解法(algorithms)
算法分为质变算法和非质变算法
迭代器:容器算法之间的粘合剂
提供一种方法,使之能够依序寻访某个容器中所含的元素,而又无需暴漏该容器的内部表示方式
每个容器都有自己的 专属迭代器
迭代器的使用非常类似于指针
迭代器种类:
常用的容器中迭代器种类为双向迭代器,和随机访问迭代器
vector存放内置数据类型
#include
#include
#include
#include
#include
using namespace std;
void myprint(int val)
{
cout< v;
//向容器中插入数据
v.push_back (10);
v.push_back (20);
v.push_back (30);
v.push_back (40);
v.push_back (50);
//通过迭代器访问容器中的数据
vector::iterator itBegin=v.begin ();//v.begin()起始迭代器,指向容器中第一个元素
vector::iterator itend=v.end ();//结束迭代器,指向容器中最后一个元素的下一个位置
//第一种遍历方式
while(itBegin !=itend )
{
cout<<*itBegin <::iterator it=v.begin ();it!=v.end ();it++ )
{
cout<<*it<
for_each()底层实现
vector中存放自定义数据类型
看代码:
#include
#include
#include
#include
#include
using namespace std;
class animal
{
public:
animal(string name,int age)
{
this->_name =name;
this->_age =age;
}
string _name;
int _age;
};
void test01()
{
//创建一个自定义类型的容器
vectorv;
//向容器中添加数据
animal p1("aaa",10);
animal p2("bbb",20);
animal p3("ccc",30);
animal p4("ddd",40);
animal p5("eee",50);
v.push_back (p1);
v.push_back (p2);
v.push_back (p3);
v.push_back (p4);
v.push_back (p5);
//遍历容器中的数据
//注意*it完成解引用后市寄存器的类型,也就是animal类型
for(vector::iterator it=v.begin ();it!=v.end();it++)
{
cout<<"姓名: "<<(*it)._name <<"年龄"<<(*it)._age <_name <<"年龄"<_age <v;
//向容器中添加数据
animal p1("aaa",10);
animal p2("bbb",20);
animal p3("ccc",30);
animal p4("ddd",40);
animal p5("eee",50);
v.push_back (&p1);
v.push_back (&p2);
v.push_back (&p3);
v.push_back (&p4);
v.push_back (&p5);
//遍历容器
for(vector::iterator pit=v.begin ();pit!=v.end();pit++)
{
//(*pit)是animal类型的指针
cout<<"姓名:"<<(*(*pit))._name <<"年龄:"<<(*(*pit))._age <_name <<"年龄:"<<(*pit)->_age <
vector容器嵌套(类似于二维数组)
#include
#include
using namespace std;
void test01()
{
vector> v;
//创建 小容器
vector v1;
vector v2;
vector v3;
vector v4;
for(int i=0;i<4;i++)
{
v1.push_back (i+1);
v2.push_back (i+2);
v3.push_back (i+3);
v4.push_back (i+4);
}
//将小容器插入到大容器中
v.push_back (v1);
v.push_back (v2);
v.push_back (v3);
v.push_back (v4);
//通过大容器来遍历所有数据,(*it)是容器---vector
for(vector > ::iterator it=v.begin ();it!=v.end();it++)
{
for(vector ::iterator sit=(*it).begin ();sit!=(*it).end();sit++)
{
cout<< *sit <<" ";
}
cout<
string容器
本质:
string和char *的区别:
特点:
string 构造函数
构造函数原型
#include
#include
#include
using namespace std;
void test01()
{
string s1;//默认构造
const char*str="hello world";
string s2(str);
cout<<"s2:"<
strint 的赋值操作
#include
#include
#include
using namespace std;
void test01()
{
string str1;
str1="hello world";
cout<<"str1="<
string 字符串拼接
实现在字符串末尾拼接字符串
#include
#include
#include
using namespace std;
void test01()
{
string str1="我";
str1+="爱看剧";
cout<<"str1="<
string 查找和替换
#include
#include
#include
using namespace std;
//查找
void test01()
{
string str1="abcdefghijk";
int pos=str1.find("de");//默认为0位置
if(pos==-1)
{
cout<<"未找到字符串"<
总结:
string 字符串比较
字符串比较是按照字符串的ascll码进行比较
= 返回0
>返回1
<返回-1
#include
#include
#include
using namespace std;
//查找
void test01()
{
string str1="zello";
string str2="hello";
if(str1.compare (str2)==0)
{
cout<<"str1==str2"<0)
{
cout<<"str1>str2"<
主要是比较相等
string中单个字符存取
#include
#include
#include
using namespace std;
//查找
void test01()
{
string str="hello";
cout<<"str="<
string 中的插入和删除
注:插入删除的起始下标都是从0开始的
string字串
#include
#include
#include
using namespace std;
//查找
void test01()
{
string str="helloworld";
string sub=str.substr(1,2);//没有参数的话,默认截取全部
cout<<"sub="<