文章目录
- erase()
- unique
- vector的insert()
- std::string::npos
erase()
(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
(2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
unique
unique是 c++标准模板库STL中十分实用的函数之一,使用此函数需要#include 头文件。该函数的作用是“去除”容器或者数组中相邻元素的重复出现的元素。
(1) 这里的去除并非真正意义的erase,而是将重复的元素放到容器的末尾,返回值是去重之后的尾地址。
(2) unique针对的是相邻元素,所以对于顺序顺序错乱的数组成员,或者容器成员,需要先进行排序,可以调用std::sort()函数
unique函数通常和erase函数一起使用,来达到删除重复元素的目的。(注:此处的删除是真正的删除,即从容器中去除重复的元素,容器的长度也发生了变换;而单纯的使用unique函数的话,容器的长度并没有发生变化,只是元素的位置发生了变化。
#include<iostream>
#include<algorithm>
#include<cassert>
using namespace std;
int main()
{
vector<int> a ={1,3,3,4,5,6,6,7};
vector<int>::iterator it_1 = a.begin();
vector<int>::iterator it_2 = a.end();
vector<int>::iterator new_end;
new_end = unique(it_1,it_2); //注意unique的返回值
a.erase(new_end,it_2);
cout<<"删除重复元素后的 a : ";
for(int i = 0 ; i < a.size(); i++)
cout<<a[i];
cout<<endl;
}
vector的insert()
在C++中,std::vector 是一个动态数组容器,可以在运行时动态地增加或减少其大小。std::vector 提供了一个成员函数叫做 insert(),它可以用于在指定位置插入一个或多个元素。
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
// 在位置 2 插入元素 10
myVector.insert(myVector.begin() + 2, 10);
// 在位置 1 插入 3 个元素,值为 7
myVector.insert(myVector.begin() + 1, 3, 7);
// 创建一个新的 vector
std::vector<int> newElements = {8, 9, 10};
// 在位置 3 插入新 vector 中的所有元素
myVector.insert(myVector.begin() + 3, newElements.begin(), newElements.end());
// 输出结果
for (int num : myVector) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
std::string::npos
std::string::npos是一个常数,它等于size_type类型可以表示的最大值,用来表示一个不存在的位置,类型一般是std::container_type::size_type。