STL(1)

本文详细介绍了C++中vector、string、pair以及map、set和它们的子类multimap、multiset的基本操作,包括创建、修改、删除、查找和遍历。涵盖了数据结构、容器和字符串处理的核心知识点。
摘要由CSDN通过智能技术生成

1.Vector

#include <vector>

​
​
//定义:
    vector<int>vec;//用多少开多少;
    vector<int>ve(10); //开辟10个空间,内部初始化为0;
    vector<int>v[100];//二维;
    vector<int>vect = { 0,1,2,3 };
    //函数
    vec.clear();//清空容器;
    for (int i = 1; i <= n; i++) v[i].clear();//一层一层清空;
    vec.push_back(3);//末尾放入;
    vec.pop_back();//末尾删除;
    vec[i] = 2;//修改;
    //排序
    sort(vec.begin(), vec.end());//一维
    for (int i = 1; i <= n; i++)//二维,逐层;
     //   sort(e[i].begin(), e[i].end());

    //删除,需要保证指针链接性
    for (auto it = vec.begin(); it != vec.end();) {
        if (*it == 4)it = vec.erase(it);//erase函数会返回删除该位的下一位的指针
        it++;
    }
    //插入 vec.insert
    for (int i = 0; i < 5; i++)
    {
        int t; cin >> t;
        vec.push_back(t);
    }
    auto it = vec.begin();
    //  vec.insert(it, 4,1);//在it位置前插入4个1 
    //1 2 3➡1 1 1 1 1 2 3
    auto f = ++vec.begin(), b = --vec.end();
    vec.insert(it,f,b);//在it位置插入区间发f-b的元素
    //1 2 3 4 5 ➡ 2 3 4 1 2 3 4 5;

    //查找:
    int t = lower_bound(vec.begin(), vec.end(), 3) - vec.begin();
    //找到第一个大于等于3的数,返回它在vec容器内的下标,如果不存在会返回vec.end()
   
    //遍历方法:
    //1
    for (auto j : vec)cout << j << ' ';
    //2
    for (int i = 0; i < vec.size(); i++)
        cout << vec[i] << ' ';

​

​

2.String

#inclulde<string>

	string a, b;
	cin >> a >> b;
	//函数
	a.clear();//清空
	a.push_back('b');//在末尾添加一个字符
	a.pop_back();//删除最后一个字符
	a += b;//字符串相加
	int t = a.find('a');//查找第一个a的下标
	string s = a.substr(0, 3);//从0下标开始包括此位置往后取3个字符
	//如果超出字符长度自动取到末尾终止;
	string s = a.substr(3);//从下标为3开始取到结束

3.Pair

#include<iostream>

	pair<int, char>pi[10];//通常作为工具和其他容器一起使用
	cin >> pi.first >> pi.second;
	pi[i] = make_pair(t, k);
	cout << pi.first << ' ' << pi.second;

4.map,set (自动去重 ,自动排序)

#include<map>

#include<set>

	set<int>se;
	map<int, int>mp;
	se.insert(1);//插入
	mp.insert({ 1,2 });//关键字为1,关键字的关键值为2;
	mp[1] = 2;//同上,给关键字赋值;
	mp[1] += 2;//关键字的关键值加2;
	
	//函数
	mp.erase(2), se.erase(2);//删除
	//遍历删除的时候注意指针的衔接 同vectoor
	int sum = mp.count();//特定元素出现次数;
	int s = mp.size();//长度
	auto j = mp.find();//查找关键字的下标,不存在的时候j=mp.end()
	auto j = mp.lower_bound(3);//查找第一个大于等于3的下标

   //遍历
	for (auto j : se)cout << j << endl;

	for (auto j : mp)
		cout << j.first << ' ' << j.second << endl;//两个值

	for (auto it = mp.begin(); it != mp.end(); it++)
		cout << (*it).first << ' ' << (*it).second << endl;

	for (auto it = se.rbegin(); it != se.rend(); it++)//反向遍历
		cout << *it << endl;

5.multimap、multiset

和map,set基本类似,无去重功能

erase删除:C++ multimap::erase()用法及代码示例 - 纯净天空 (vimsky.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值