欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
//}
相关标签: 编程笔记 STL