簡體   English   中英

C++ 檢查數組是否包含重復項

[英]C++ check if the array contains duplicates

我有字符串向量,我需要檢查數組是否包含重復項:

std::vector<std::string> data{};
const bool notContainsDuplicates = ...;

我可以用標准庫解決這個問題嗎?

您可以這樣做,使用標准庫集來計算唯一條目的數量,如果這與輸入數組的長度相同,則沒有重復項(另一種選擇是使用 unordered_map):

#include <cassert>
#include <string>
#include <vector>
#include <set>

bool contains_duplicates(const std::vector<std::string>& input)
{
    std::set<std::string> set{ input.begin(), input.end() };
    return (set.size() != input.size());
}

int main()
{
    std::vector<std::string> no_dups{ "hello","this","does","not","contain","duplicates" };
    std::vector<std::string> dups{ "hello","this","does","contain","duplicates","hello","this" };

    assert(!contains_duplicates(no_dups));
    assert(contains_duplicates(dups));

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM