Как использовать std :: unordered_set для вектораудалить дубликаты - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть std :: vector >, который содержит простые числа.Я хочу исключить двойные записи, так как векторное содержимое будет экспортировано в файл и должно содержать только уникальные простые числа.

Простые числа будут приходить через определенные интервалы, передаваемые в мой алгоритм через файл, например (32,345).Могут быть случаи, когда интервалы будут перекрываться, например (54,434), (345,596).Я хочу использовать std :: unordered_set, так как он будет наиболее эффективным для моего случая.Я видел примеры с std :: vector и пытался приспособить это к моим потребностям, но безрезультатно.

Вот код, который я пробовал, вдохновленный методом печати 2d-вектора.

std::vector<std::vector<int> > sharedAnswersVec;
...
...
std::unordered_set<int> unique_primes;
for (auto i = 0; i < sharedAnswerVec.size(); i++) 
{
    for (auto j = 0; j < sharedAnswerVec[j].size(); j++) 
    {
        unique_primes.insert({ i,j });
        sharedAnswerVec.assign(unique_primes.begin(), unique_primes.end());
        sort(sharedAnswerVec.begin(), sharedAnswerVec.end());
    }
}

sharedAnswerVec не может быть std :: vector , должно быть std :: vector >.Имея это в виду, какие изменения я должен сделать, чтобы исправить это?

Я новичок, пытающийся учиться, поэтому, если вопрос кажется вам глупым, имейте это в виду.

1 Ответ

0 голосов
/ 18 февраля 2019

Вы пытаетесь вставить что-то в свой std::unordered_set<int> что-то, что не является int.

Мне не ясно, каковы ваши "интервалы" или что вы делаете при сортировке.Возможно, это какое-то использование?

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

int main()
{
    std::vector<std::vector<int> > sharedAnswersVec = {
        {1,2,3,5,7,11,13,17,19,23,29},
        {2,5,11,17,23,29}
    };

    std::set<int> unique_primes;
    for ( const auto& v : sharedAnswersVec )
    {
        for ( auto i : v )
        {
            unique_primes.insert(i);
        }
    }

    for ( auto i : unique_primes )
    {
        std::cout << i << std::endl;
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...