码迷,mamicode.com
首页 > 其他好文 > 详细

标准模板库

时间:2016-05-13 01:42:46      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!