目录
1.copy() 【拷贝】
传入三个参数:起始位置,终止位置,拷贝的目标容器的起始位置
例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2(3);
std::copy(vec1.begin(), vec1.end(), vec2.begin());
for (auto i : vec2) {
std::cout << i << " "; // 输出:1 2 3
}
return 0;
}
2.remove()和erase() 【移动和清除】
remove() 函数用于从容器中删除指定值的元素,并将这些元素移到容器的末尾。但是,remove() 并不会实际删除元素,它只是将指定值的元素移到末尾,并返回一个指向新的逻辑结尾的迭代器,所以,一般会和erase()函数配合使用
remove()函数传入三个参数:起始位置,终止位置,需要删除的值
erase()函数有两种重载形式,参数数量和含义也略有不同:
(1)erase(pos):删除指定位置上的元素
(2)erase(first,end):删除指定范围内的元素
例:
(二者配合使用):
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除值为3的元素
auto it = std::remove(vec.begin(), vec.end(), 3);
// 将被删除的元素后面的元素进行压缩
vec.erase(it, vec.end());
for (auto i : vec) {
std::cout << i << " "; // 输出:1 2 4 5
}
return 0;
}
(单独使用erase()函数):
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除索引为2的元素
vec.erase(vec.begin() + 2);
for (auto i : vec) {
std::cout << i << " "; // 输出:1 2 4 5
}
std::cout << std::endl;
// 删除索引为1到3的元素
vec.erase(vec.begin() + 1, vec.begin() + 4);
for (auto i : vec) {
std::cout << i << " "; // 输出:1 5
}
return 0;
}
3.replace() 【替换】
传入四个参数:起始位置,终止位置,被替换的值,替换后的值
例:
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 2, 3, 4, 2, 5};
std::replace(vec.begin(), vec.end(), 2, 6);
for (auto i : vec) {
std::cout << i << " "; // 输出:1 6 6 3 4 6 5
}
return 0;
}
4.unique()
用于移除容器中相邻的重复元素,使得容器中的所有不重复的元素都位于容器的开始部分,并返回一个指向新的逻辑结尾的迭代器。但是需要注意的是, unique() 只会移除相邻的重复元素,而不会移除不相邻的重复元素。
例:
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 2, 3, 3, 4, 5, 5};
// 去除容器中的相邻重复元素
auto it = std::unique(vec.begin(), vec.end());
// 擦除重复元素后的多余部分
vec.erase(it, vec.end());
for (auto i : vec) {
std::cout << i << " "; // 输出:1 2 3 4 5
}
return 0;
}
---------------------------------------------------------------------------------------------------------------------------------
觉得有用就点点关注收藏一下吧~谢谢支持~
504

被折叠的 条评论
为什么被折叠?



