标准模板库

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可直接使用,同其它类型不一样。

补充:引用必须初始化,而指针并一定


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值