标签:
C++学习笔记之六
标准模板库是C++标准库的一部分,是C++编程中经常用到的一个模板。下面将介绍它的常用结构。主要以string,vector,map,list为例。
1.vector
一般用法:#include<vector>
using namespace std;
vector<int > arr;
//常用函数:
push_back()//尾部添加
pop_back();//尾部删除
clear();//删除所有元素
vector :动态增加内存,
arr.at(1)=1;<=>arr[1]=1;
使用迭代器:
vector<int>:;iterator iter;
for(iter=arr.begin();iter!=arr.end();iter++){
int &value =*iter;
printf("%d\t",arr[i]);
}
//vector不大适合插入删除操作
2.list模板(链表)
push_back,pop_back
push_front,pop_front
#include<list>
using namespace std;
list不支持随机访问
list比vector更适合插入操作。
重要性:vector 可有可无而list不可缺少
class Object{
};
list<Object> ls;//ls对象
ls.push_back(Object(1,"张三"));
ls.push_back(Object(2,"李四"));
定义迭代器:
list<Object>::iterator iter;//迭代器是一个指针类型
for(iter=ls.begin();iter!=ls.end();iter++){
Object &value=*iter;
printf("%d,%s",value.id,value.name);
}
//删除
for(iter=ls.begin();iter!=ls.end();iter++){
Object &value=*iter;
if(value.id=3){
ls.erase(iter);
break;
}
}
自定义链表模板很麻烦,使用list模板更加方便。
3.string模板
常用函数:append,clear,capacity,size,lengeh,at,find
#include<string>
using namespace std;
string str1;//代表空字符串。
string str2(“abcde‘,5);
注:不能初始化为空
1)加入元素
str1.append("abscd‘,3);//拷贝长度为3;
str1.append("abdcde",1,3);//下标1到下标3
str1.append(4,‘h‘);//添加了4个h字符。
访问串内容:str1.at(i)=j;<==>str1[i]=j;
2)比较
可直接使用==,>=等关系运算符,因为其重载了。
3)查找以及提取子串
find(‘i‘);//查找i的位置,并返回
rfind(‘i‘);//重右开始找
t1.substr(4);//从第四个字符开始取元素
t1.substr(4,3)//从第四个开始,长度为3;
4)string是一个模板类型,作为函数参数,使用引用传递
void test(const string &t){}//不改内存值
void test(string &t){}//改变内存值
5)string类成员函数c_str();
返回一个c风格的字符串,内容同string类对象本身;通过string类中c_str()函数将string对象转化成c中的字符串格式。
string s1("abc‘);
printf(‘%s\n‘,s1.c_str());
例:const char *p=s1.c_str();
printf("%s\n‘,p);
6)字符串的访问:
at或[]来访问
标准模板库里string可直接使用,同其它类型不一样。
补充:引用必须初始化,而指针并一定
标签:
原文地址:http://blog.csdn.net/a18852867035/article/details/51345690