C++中repeated元素的处理技巧

   2024-09-30 2400
核心提示:在C++中,处理重复元素的方法有很多种使用集合(set)或无序集合(unordered_set):集合和无序集合都会自动去除重复元素。你可

在C++中,处理重复元素的方法有很多种

使用集合(set)或无序集合(unordered_set):集合和无序集合都会自动去除重复元素。你可以将元素插入这些容器中,然后从中读取不重复的元素。
#include<iostream>#include <set>#include<vector>int main() {    std::vector<int> numbers = {1, 2, 3, 4, 4, 5, 6, 6, 7};    std::set<int> unique_numbers(numbers.begin(), numbers.end());    for (int num : unique_numbers) {        std::cout<< num << " ";    }    return 0;}
使用算法(unique):C++标准库提供了一个名为unique的算法,它可以移除连续的重复元素。注意,这个算法只能用于已排序的序列。
#include<iostream>#include<vector>#include<algorithm>int main() {    std::vector<int> numbers = {1, 2, 2, 3, 4, 4, 5, 6, 6, 7};    std::sort(numbers.begin(), numbers.end()); // 先对数组进行排序    auto last = std::unique(numbers.begin(), numbers.end()); // 移除连续重复元素    numbers.erase(last, numbers.end()); // 删除多余的元素    for (int num : numbers) {        std::cout<< num << " ";    }    return 0;}
使用双重循环:如果你不想使用额外的数据结构或算法,可以使用双重循环来检查并删除重复元素。
#include<iostream>#include<vector>int main() {    std::vector<int> numbers = {1, 2, 2, 3, 4, 4, 5, 6, 6, 7};    for (size_t i = 0; i< numbers.size(); ++i) {        for (size_t j = i + 1; j< numbers.size();) {            if (numbers[i] == numbers[j]) {                numbers.erase(numbers.begin() + j);            } else {                ++j;            }        }    }    for (int num : numbers) {        std::cout<< num << " ";    }    return 0;}

请注意,这些方法在处理大量数据时可能会有性能差异。在实际应用中,你可能需要根据具体情况选择最合适的方法。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号