vector就是类似于一个数组的容器,内容比数组更加全面。很多操作都有自己的函数可以直接拿过来进行使用。主要函数就是:
v.push_back(k);
尾插元素;v.insert(it,k);
在任意位置插入元素;v.eraser(it,it+k);
删除任意元素;v.size();
容量;v.clear();
清空容器;v.empty();
判断容器是否为空;reverse(v.begin(),v.end());
反转任意段元素sort(v.begin(),v.end(),cmp);
sort排序默认由小到大,cmp可以自由规定排序规则。
迭代器声明:
vector<int>::iterator it;
// vector迭代器
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
bool cmp(const int &a,const int &b){
return a>b;
}
int main ()
{
set<int> c;
queue<int> q;
cout<<"------------[vector] 分割线-------------\n"<<endl;
vector<int> v(1);
v[0]=0;
v.push_back(1); // 尾插元素
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.insert(v.begin(),55); // 插入元素
v.insert(v.begin()+1,66);
vector<int>::iterator p; // vector迭代器
for(p=v.begin();p!=v.end();p++)
cout<<*p<<" ";
cout<<endl;
cout<<v.size()<<endl; // vector元素个数
reverse(v.begin(),v.end()); // 反转vector
sort(v.begin(),v.end(),cmp); // sort一下vector
v.erase(v.begin()+1); // 删除元素
v.clear(); // 清空vector
cout<<v.empty()<<endl;
cout<<v.size()<<endl;
return 0;
}
string就是一个串类,在stl库中可以直接定义数据类型为string,而在c中只有字符类型和数组类型,串并不是一种类型,不过可以定义为字符数组来代替。这里面直接使用string可以更方便一点的。
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
cout<<"------------[string] 分割线-------------\n"<<endl;
string s;
// 输入读取串 getline(cin,s);
s="z2345";
s+="6789";
string::iterator it; // string迭代器
it=s.begin();
s.insert(it+1,'p'); // string插入字符
s.erase(it+2,it+4); // 删除[it+2,it+4)元素
s.replace(6,2,"golfz"); // 替换下标为6长度为2的串
cout<<s.find("z")<<endl; // 查找子串,返回第一个出现的位置
cout<<s.length()<<endl; // 返回串的长度
cout<<s<<endl;
vector<string> ff; // string对象作为vector对象
ff.push_back("Jack");
ff.push_back("Tom");
ff.push_back("Mchical");
cout<<ff[2]<<endl;
return 0;
}