[C++]vector去除重復元素


#include <iostream>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

/**
 * vector去除重復元素
 * @tparam T
 * @param result
 * @return
 */
template<typename T>
vector<T> vector_distinct(vector<T> result) {
    sort(result.begin(), result.end());
    auto ite = unique(result.begin(), result.end());
    //刪除重復的元素
    result.erase(ite, result.end());
    return result;
}

/**
 * 利用set為vector數組去重
 * @tparam T 
 * @param vec 
 * @return 
 */
template<typename T>
vector<T> vectorToset_distinct(vector<T> vec) {

    set<T> st(vec.begin(), vec.end());
    vec.assign(st.begin(), st.end());
    return vec;
}

int main() {
    vector<string> v_str1 = {"a", "b", "c", "d", "e", "b"};
    vector<string> v_res = vector_distinct(v_str1);
    vector<string> vs_res = vectorToset_distinct(v_str1);
    cout << "v_str1=";
    for (auto v:v_str1) {
        cout << v << ",";
    }
    cout << endl;
    cout << "v_res=";
    for (auto v:v_res) {
        cout << v << ",";
    }
    cout << endl;
    cout << "vs_res=";
    for (auto v:vs_res) {
        cout << v << ",";
    }
    cout << endl;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM