c++STL中vector、set、string的基本操作
程序员文章站
2022-03-22 22:17:16
...
1.vector的常用操(vector是一个可变长数组)
#include<stdio.h>
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> a;
for (int i = 0; i < 5; i++)
{
a.push_back(i);
}
a.pop_back();//删除末尾的元素
a.pop_back();
printf("%d\n", a.size());//unsigned类型
vector<int>::iterator it = a.begin();
for (int i = 0; i<a.size(); i++)
{
printf("%d\n", *(it + i));//按下标访问输出
}
a.clear();
a.insert(a.begin(), 8);//在开始位置插入8
a.insert(a.begin() + 2, 10);//在a[2]位置插入10
a.erase(a.begin() + 2);//删除a[2]
for (vector<int>::iterator it = a.begin(); it != a.end(); it++)
{
printf("%d\n", *it);
}
a.erase(a.begin(), a.begin() + 2);//删除a[0],a[1],不包含a[2]
for (vector<int>::iterator it = a.begin(); it != a.end(); it++)
{
printf("%d\n", *it);//迭代器输出
}
return 0;
}
2.set容器操作(set是一个自动由小到大进行排序且无重复元素的集合)
#include<stdio.h>
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int> a;
a.insert(1);
a.insert(2);
a.insert(2);
a.insert(-1);
a.insert(0);
a.insert(3);
for (set<int>::iterator it = a.begin(); it != a.end(); it++)//除了vector和string,其他容器都不支持*(it+i)的访问方式
{
printf("%d\n", *it);
}
//set<int>::iterator i = a.find(3);
//printf("%d\n", *i);
//printf("%d\n", *(a.find(0)));
//a.erase(a.find(3));//利用find函数找到3,并将其删除
//a.erase(2);//直接删除指定元素
set<int>::iterator it = a.find(0);
set<int>::iterator t = a.find(2);
a.erase(it, t);//删除的是0(包含0)到2(不包含2)之前的元素
for (set<int>::iterator it = a.begin(); it != a.end(); it++)//除了vector和string,其他容器都不支持*(it+i)的访问方式
{
printf("%d\n", *it);
}
//printf("%d", a.size());//输出长度
//a.clear();//清楚a内的所有元素
return 0;
}
3.string容器基本操作
//#include<stdio.h>
//#include<iostream>
//#include<string>
//using namespace std;
//int main()
//{
/*string str = "I am a boy";*/
//for (int i = 0; i < str.length(); i++)//strig就相当于一个字符数组,可以逐个元素输出
//{
// printf("%c", str[i]);
//}
//for (string::iterator it = str.begin(); it != str.end(); it++)//迭代器访问输出
//{
// printf("%c", *it);
//}
string的输入输出只能用cin和cout
//cin>> str;
//cout << str;
//字符串连接
/*string str1 = " haha";
string str3;
str3 = str1 + str;
cout << str3 << endl;*/
//string str4 = "asd";
//string str5 = "aed";
//if (str5 < str4)
//{
// printf("str5小于str4");//两个字符串的比较是从左到右进行ASCII码的比较
//}
//输出字符串长度的两种方式
//printf("%d\n", str.length());
//printf("%d\n", str.size());
//str.insert(4, " not");//在str[4]位置插入一个字符串
//cout << str << endl;
//str.insert(str.begin(), str1.begin(), str1.end());//将str1的部分元素插入str中
//cout <<str<<endl;
//str.erase(str.begin() + 2);//删除str[2]
//cout << str << endl;
//str.erase(str.begin(), str.begin() + 4);//删除str[2],str[3]
//cout << str << endl;
//str.clear();//清空str字符串
//cout<<str.substr(0,4)<<endl;//返回从str[0]开始,长度为4的子串
//string str6 = "am";
//cout << str.find(str6) << endl;//返回该子串在str中第一次出现的位置,如果该位置存在返回该位置,如果不存在返回string::npos(-1或是4294967295)
//str.replace(0, 4, "I am not");//从str的首位开始,长度为4的子串用后面的字符串代替
//cout << str << endl;
// str.replace(str.begin(), str.begin() + 4, "I am not");//指定迭代器[str[0],str[4])区间用后面的字符串替换
// cout << str << endl;
//
// return 0;
//}