STL基本容器及算法

STL

1.STL-常用容器

1.string

1.1基本概念

本质:

  • string和C++风格的字符串,而string本质上是一个类

string和char*区别:

  • char* 是一个指针
  • string是一个类i,类内部封装了char*,管理这个字符串,是一个char*型的容器

特点:

string类内部封装了很多成员方法: 查找find,删除delete,替换replace,插入insert

string管理char*所分配的内存,不用担心赋值越界和取值越界等,由类内部进行负责

1.2string构造函数
  • string(); 创建一个空串
  • string(const char* s); 使用字符串s初始化
  • string(const string& str); 使用一个string对象初始化另一个string对象
  • string(int n,char c); 使用n个字符c初始化
1.3赋值操作
  • string& operator=(const char* s); / /char*类型字符串赋值给当前的字符串
  • string& operator=(const string &s); //把字符串s赋给当前的字符串
  • string& operator=(char c); //字符赋值给当前的字符串
  • string& assign(const char *s) ; //把字符串s赋给当前的字符串
  • string& assign (const char *s,int n); //把字符串s的前n个字符赋给当前的字符串
  • string& assign (const string &s) ; //把字符串s赋给当前字符串
  • string& assign(int n,char c) ; //用n个字符c赋给当前字符串
1.4字符串拼接
  • string& operator+=( const char* str); /重载+=操作符
  • string& operator+(const char c); //重载+=操作符
  • string& operator+=( const string& str); //重载+=操作符
  • string& append(const char *s ); //把字符串s连接到当前字符串结尾
  • string& append(const char *s, int n); //把字符串s的前n个字符连接到当前字符串结)
  • string& append(const string &s ) ; /同operator+=(const string& str)
  • string& append(const string &s,int pos,int n); /l字符串s中从pos开始的n个字符连接到字符串结尾
1.5替换与查找
  • int find(const string& str,int pos = 0) const; //查找str第一次出现位置,从pos开始查找
  • int find(const char* s, int pos = e) const; 查找s第一次出现位置,从pos开始查找
  • int find(const char* s , int pos, int n) const; 从pos位置查找s的前n个字符第一次位置
  • int find(const char c, int pos = e) const; 查找字符c第一次出现位置
  • int rfind(constI string& str, int pos = npos) const; 查找str最后一次位置,从pos开始查找
  • int rfind(const char* s, int pos = npos) const; 查找s最后一次出现位置,从pos开始查找
  • int rfind(const char* s, int pos, int n) const; 从pos查找s的前n个字符最后一次位置
  • int rfind(const char c, int pos = e) const; 查找字符c最后一次出现位置
  • string& replace(int pos, int n,const string& str); 替换从pos开始n个字符为字符串str
  • string& replace(int pos, int n,const char* s ); 替换从pos开始的n个字符为字符串s

find: 从左往右查找

rfind: 从右往左找

1.6string字符串比较

功能描述:

  • 字符串之间的比较

比较方式:

  • 字符串比较是按字符的ASCII码进行对比
    • = 返回 0
    • > 返回 1
    • < 返回 -1
  • 函数原型:
    • int compare(const string&s) const; //字符串s比较
    • int compare(const char*s)const; //与字符串s比较
1.7字符存取

string中单个字符存取方式有两种:

  • char& operator[](int n); //通过[]方式存取字符
  • char& at(int n); //通过at方法存取字符
1.8插入与删除

功能描述:

  • 对string字符进行插入和删除字符操作

函数原型:

  • string& insert(int pos,const char* s); //插入字符串
  • string& insert(int pos,const string& str); //插入字符串
  • string& insert(int pos,int n,char c); //在指定位置插入n个字符c
  • string& erase(int pos,int n = npos); //删除从npos开始的n个字符
1.9string子串

功能描述:

  • 从字符串中获取想要的子串

函数原型:

  • string substr(int pos = 0,int n = npos)const; //返回由pos开始的n个字符组成的字符串

2.vector

2.1基本概念

功能:

  • vector数据结构和数组非常相似,也称为单端数组

vector与普通数组区别:

  • 不同之处在于数组是静态空间,而vector可以动态扩展

动态扩展:

  • 并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间

2.2构造函数

功能描述:

  • 创建vector容器

函数原型:

  • vector<T>v; 默认构造函数
  • vector(v.begin(),v.end()); 将区间元素拷贝
  • vector<n.elem>; 构造函数将n个elem拷贝给本身
  • vector<const vector&vec> 拷贝构造函数
2.3赋值操作

功能描述:

  • 给vector容器进行赋值

函数原型:

  • vector& operator=(const vector& vec); 重载等号操作符
  • assign(beg,end); 将区间内数据拷贝赋值本身
  • assign(n.elem); 将n个elem拷贝赋值给本身
2.4vector容量和大小

功能描述:

  • 对vector容器的容量和大小操作

函数原型:

  • empty(); 判断容器是否为空
  • capacity(); 容器的容量
  • size(); 返回容器中元素的个数
  • resize(int num); 重新指定容器的长度为num,若容器边长,则以默认值填充新位置。若变短,则末尾超出容器长度的元素被删除
  • resize(int num.elem); 重新指定容器的长度为num,若容器边长,则以elem充新位置。若变短,则末尾超出容器长度的元素被删除
2.5vector插入和删除

功能描述:

  • 对vector容器进行插入,删除操作

函数原型:

  • push_back(ele); 尾部插入元素ele
  • pop_back(); 删除最后一个元素
  • insert(const_iterator pos, ele); 迭代器指向位置pos插入元素ele
  • insert(const_iterator pos,int count,ele); //迭代器指向位置pos插入count个元素
  • erase(const_iterator pos); //删除迭代器指向的元素
  • erase(const_iterator start, const_iterator end); //删除迭代器从start到end之间的元素
  • clear(); //删除容器中所有元素
2.6vector数据存取

功能描述:

  • 对vector中的数据的存取操作

函数原型:

  • at(int index); 返回索引idx所指的数据
  • operator[]; 返回索引idx所指的数据
  • front(); 返回容器中的第一个数据元素
  • back(); 返回容器中最后一个数据元素
2.7互换内存

功能描述:

  • 实现两个容器内元素进行互换
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ STL(Standard Template Library)是一个强大的库,它包含了许多容器算法,可以让我们更加方便和高效地进行程序设计和开发。 下面是一些常用的 STL 容器算法: ### 容器 1. vector:动态数组,支持随机访问和尾部插入、删除操作。 2. list:双向链表,支持双向迭代器和任意位置的插入、删除操作。 3. deque:双端队列,支持随机访问和头尾插入、删除操作。 4. set/multiset:红黑树实现的集合/多重集合,支持自动排序和去重。 5. map/multimap:红黑树实现的映射/多重映射,支持自动排序和键值对的查找和修改。 6. unordered_set/unordered_multiset:哈希表实现的集合/多重集合,支持 O(1) 的查找和插入操作。 7. unordered_map/unordered_multimap:哈希表实现的映射/多重映射,支持 O(1) 的查找和插入操作。 ### 算法 1. sort:排序算法,支持快速排序、归并排序、堆排序等多种排序方式。 2. binary_search:二分查找算法,可以在有序序列中查找某个元素。 3. find/fill/replace:查找、填充、替换算法,可以在容器中查找元素,将容器中的元素设置为指定值,或者将容器中的元素替换为指定值。 4. unique:去重算法,可以将容器中相邻的重复元素去掉。 5. reverse:反转算法,可以将容器中的元素反转。 6. accumulate:累加算法,可以对容器中的元素进行累加操作。 7. max/min:最大/最小值算法,可以在容器中查找最大/最小值。 以上仅是 STL 容器算法的一部分,还有很多其他的容器算法可以使用,具体可以参考 C++ STL 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值