C++ STL 容器整理

vector

  1. 创建vector
    1. vector< type >vec;//声明一个空向量
    2. vector< type >vec(n);//声明一个初始大小为n的的向量
    3. vector< type >vec(vec1);//以复制一个vec1向量
  2. 插入元素
    1. push_back(a)//在向量的尾部插入元素a
    2. insert(vec.begin()+i,a)//在向量的第i个位置插入元素a
  3. 删除元素
    1. clear()//清空向量
    2. erase(vec.begin()+i)//删除第i个元素
    3. erase(vec.begin()+i,vec.begin()+j)//删除区间[i,j)上的元素
  4. 判断是否为空
    1. empty()//为空返回true,否则返回false
    2. size()//返回向量中元素的个数
  5. 迭代器的使用
#include<iostream>
#include<vector>
using namespace std;
int main(){
    vector<int>vec(n);
    for(int i = 0;i < vec.size();i++){
        vec[i] = i;
    }
    vector<int>::iterator iter;
    for(iter = vec.begin();iter != vec.end();iter++){
        cout<<*iter<<" ";
    }
    return 0;
}

map

  1. 创建map
    1. map< key_type,value_type >mp;
  2. 插入元素
    1. mp[key] = value;
    2. mp.insert(pair< key_type,value_type >(key,value));
  3. 查找元素
    1. find(a)//寻找key值为a的元素,找到则返回指向该元素的迭代器
  4. 删除元素
    1. erase(iter)//删除迭代器iter指向的元素
    2. clear()//删除所有元素
  5. 判断是否为空
    1. empty()//为空返回true,否则返回false
    2. size()//返回map容器中键值对的个数
  6. 迭代器使用
#include<iostream>
#include<map>
using namespace std;
int main(){
    map<int,int>mp;
    for(int i = 0;i < 10;i++){
        mp.insert(pair<int,int>(i,i+1));
    }
    map<int,int>::iterator iter;
    for(iter = mp.begin(),iter != mp.end();iter++){
        cout<<iter->first<<" "<<iter->second<<endl;
    }
    return 0;
}

string

  1. 创建string
    1. string s;//声明一个string对象
    2. string s1(s2);//复制一个string对象
    3. string s(n,’c’);//用n个’c’字符创建一个string对象
  2. 改变string
    1. s = s1 + s2;//拼接两个字符串
    2. s = s.substr(i,j);//截取区间[i,j)上的字符串
    3. s.insert(i,”123”);//将字符串”123”插入到i位置
    4. s.erase(i);//删除i位置的字符
    5. s.erase(i,j);//删除区间[i,j)上的字符串
    6. s.append(a);//将a拼接到s后面
    7. reverse(s.begin(),s.end());//将字符串反转
  3. 字符串查找
    1. find(a);//返回第一次找到a的下标
    2. find_first_not_of(a);//返回第一个不是a的下标
    3. find_first_of(a);//返回第一个是a的下标
    4. find_last_not_of(a);//返回最后一个不是a的下标
    5. find_last_of(a);//返回最后一个a的下标
  4. length();//返回字符串的长度

set

  1. 创建set
    set< type >myset;
  2. 添加元素
    insert(a)
  3. 删除元素
    1. erase(a);//删除值为a的元素
    2. clear();//清空元素
  4. 判断是否为空
    1. empty();//为空返回true,否则返回false;
    2. size();//返回set容器中元素的个数
  5. 迭代器的使用
#include<iostream>
#include<set>
using namespace std;
int main(){
    set<int>myset;
    for(int i = 0;i < 10;i++){
        myset.insert(i);
    }
    set<int>::iterator iter;
    for(iter = myset.begin();iter != myset.end();iter++){
        cout<<*iter<<endl;
    }
    return;
}

queue

  1. 创建队列
    queue< int >que;
  2. 入队
    push(a);
  3. 出队
    pop()
  4. 访问队首元素
    front()
  5. 访问队尾元素
    back()
  6. 查看队列大小
    size()
    empty()

stack

  1. 声明栈
    stack sta;
  2. 入栈
    push()
  3. 出栈
    pop()
  4. 访问栈顶元素
    top()
  5. 查看栈内元素个数
    size()
    empty()
### LeetCode C++ STL 容器使用教程 #### 常见容器概述 在LeetCode编程挑战中,C++标准模板库(STL)中的容器扮演着至关重要的角色。这些数据结构不仅能够简化代码编写过程,还能提高程序效率。对于求职者而言,在面试撕题阶段掌握STL容器的应用技巧显得尤为重要[^1]。 #### 字符串操作实例 考虑如下一段用于展示`string`类成员函数的简单例子: ```cpp #include <iostream> #include <string> using namespace std; int main(){ string s("hello world"); // 输出字符串长度 cout << "Size of the string is: " << s.size() << endl; // 查找子串位置 size_t found = s.find("world"); if (found != string::npos){ cout << "'world' first occurs at position: " << found << endl; } } ``` 上述代码片段展示了如何获取字符串的实际尺寸以及定位特定模式首次出现的位置[^3]。 #### 向量(Vector)基础用法 向量是最常使用的动态数组形式之一,支持随机访问其内部元素并允许高效地追加新项至末端。下面给出了一段创建、填充并向终端用户打印整型数值序列的方法: ```cpp #include <vector> #include <iostream> using namespace std; void displayVector(const vector<int>& v){ for(auto elem : v){ cout << elem << ' '; } cout << '\n'; } int main(){ vector<int> numbers{1, 2, 3}; displayVector(numbers); // 添加更多元素到现有列表里 numbers.push_back(4); numbers.emplace_back(5); displayVector(numbers); } ``` 这段示范说明了初始化带有初始值集合的方式,并介绍了两种不同的方法来扩展已存在的向量内容——通过调用`push_back()`或者更高效的就地构造版本`emplace_back()`[^2]。 #### 排序与自定义比较器 当涉及到对复杂对象进行排序时,可能需要提供额外的信息给sort算法以便正确处理各个记录之间的相对顺序关系。这里有一个利用lambda表达式实现降序排列整数数组的小案例: ```cpp #include<algorithm> #include<iostream> #include<vector> using namespace std; int main(){ vector<int> nums={6,5,9,1,2,8,7,3,4,0}; // 应用std::sort配合lambda表达式的组合完成逆序整理工作 sort(begin(nums), end(nums), [](const int& a,const int& b){return a>b;}); copy(cbegin(nums), cend(nums), ostream_iterator<int>(cout," ")); } ``` 此部分强调了灵活运用匿名函数定制化逻辑的重要性,使得开发者可以根据实际需求调整默认行为[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值