把一个int的每位数字拆分成数组
#include <vector>
#include <algorithm>
int num = 1234;
vector<int> arr;
while (num) {
arr.emplace_back(num % 10);
num /= 10;
}
arr; // 输出的是反向数组,即[4, 3, 2, 1]
std::reverse(arr.begin(), arr.end()) // 翻转数组即可变为正向,即[1, 2, 3, 4]
对一个int数组去重
#include <vector>
#include <algorithm>
// 手动去重
vector<int> arr = {1, 2, 2, 2, 3, 3, 4};
sort(arr.begin(), arr.end()); // 必须先排序!
int unique_index = 0;
for (int i = 0; i < arr.size(); i++) {
if (arr[unique_index] != arr[i]) {
unique_index++;
arr[unique_index] = arr[i];
}
}
arr.resize(unique_index + 1);
arr; // 去重后数组[1, 2, 3, 4]
// 库函数
vector<int> arr = {1, 2, 2, 2, 3, 3, 4};
sort(arr.begin(), arr.end()); // 必须先排序!
// 使用std::unique去除相邻重复元素,返回去重后的最后一个元素的下一个位置
auto it = std::unique(arr.begin(), arr.end());
// 使用erase删除重复的元素
arr.erase(it, arr.end());
arr; // 去重后数组[1, 2, 3, 4]