现在的位置: 首页 > 综合 > 正文

C++STL泛型编程——vector向量容器

2018年02月06日 ⁄ 综合 ⁄ 共 1980字 ⁄ 字号 评论关闭

Vector向量容器

 

Vector向量容器不仅能像数组那样对元素进行随机访问,而且可以在尾部插入元素,具有对内存自动管理的功能,对于元素的插入和删除,可以动态调整所占的内存空间。

向量的元素类型可以是int,double,char等简单类型,也可以是结构体或string基本字符序列容器。下面仅举int型和string型的例子,其他类型的都差不多,一样。

 

#include<vector>

创建vector向量:vector<int>name(或name(元素数)或name(元素数,初值))

Name.push_back(值)---------------尾部插入元素

访问元素的方式:1)Name[2]------像数组一样访问元素

2)用迭代器访问

定义迭代器:vector<int>::iterator it;

用迭代器遍历元素:for(it=name.begin();it!=name.end();it++){cout<<*it<<” ”}  cout<<endl;

 

插入元素:insert(哪个下标前,值)  如name.insert(v.begin(),7);

删除元素:1)erase(起始点,终止点),如name.erase(name.begin(),name.begin()+1)或name.erase(name.begin());2)clear()-------------一次性全部删除vector中的元素,如name.clear()

向量的大小:1)name.size()-----------返回元素的个数 2)name.empty()------判断向量是否空

 

排列向量容器的元素

#include<algorithm>

有两种方式:1)reverse(name.begin(),name.end())-----------反向排列(从大到小)

2)sort(name.begin(),name.end())----------从小到大排列

3)自定义排序方式

         sort(name.begin(),name.end(),cmp)---------------其中cmp是自己定义的,如

bool cmp(const int &a, const int &b){return(a>=b);}-------从大到小排序,注意其中const作用是确保函数操作的对象值不被改变  &表示是传地址方式

 

string基本字符系列容器

#include<string>

创建String s=”hello C++”; 或#include<vector> vector<string> s-----可以应用vector的一些方法像s.push_back(“Jack”);

尾部追加字符:1)S+=”!”;2)s.append(“123”);

插入字符 s.insert(s.begin(),’p’);

 

删除字符串string:1)清空一个字符串,直接给它赋空字符串即可 2)使用erase()删除迭代器所指的那个元素或一个区间中的所有元素,如s.erase(s.begin(),s.begin()+3)

 

长度大小 -----s.length()  是否为空----------s.empty()

 

子串替换 s.replace(3,3,”world”);---(起始点,长度,替换的字符串)

寻找子串:s.find(“world”)---返回下标值

比较------s.compare(“hello”)----相等返回0,大返回1,小返回-1

 

排序问题

同上面所述,reverse(s.begin(),s.end())   sort(s.begin(),s.end(),cmp)

 

 string类型的应用C 中的printf()输出,应这样printf(s.c_str());

 

sscanf(“abc 123 cde”,”%s %s %s”,s1,s2,s3)-----------给s1,s2,s3分别赋值为abc,123,cde

 

 

重点重点重点

String对象与数值相互转换函数

#include<iostream>

#include<string>

#include<sstream>(这个头文件很重要)

using namespace std;

/*数值转换为string*/

string convertToString(double( or int and soon) x){

ostringstream s;

if(s<<x)return s.str();

return “conversion error”;

 

/*string转换为数值*/

Double(or int and so on) convertFromString(const string &s){

istringstream i(s);

double x;

if(i>>x)return x;

return 0.0;

}

 

抱歉!评论已关闭.