Togliere elemento da vettore di POINT

di il
3 risposte

Togliere elemento da vettore di POINT

Ho un vettore composto da elementi di tipo POINT, uso c++ e ambiente di sviluppo visual studio, c'è un modo veloce per togliere i doppioni dal vettore? Ho trovato qualche esempio ma solo per vettori contenenti elementi di tipo int o double

3 Risposte

  • Re: Togliere elemento da vettore di POINT

    Che intendi per veloce? Se intendi più facile, puoi usare il tipo vector. Se intendi dal punto di vista computazionale, non c'è un modo più veloce che non richieda delle copie.

    Puoi migliorare la ricerca dei doppioni introducendo qualche tipo di ordinamento. 

  • Re: Togliere elemento da vettore di POINT

    17/05/2023 - Alexv ha scritto:


    Che intendi per veloce? Se intendi più facile, puoi usare il tipo vector

    Sì infatti ho usato il tipo vector..avete qualche esempio da propormi?

  • Re: Togliere elemento da vettore di POINT

    17/05/2023 - vale88 ha scritto:


    17/05/2023 - Alexv ha scritto:


    Che intendi per veloce? Se intendi più facile, puoi usare il tipo vector

    Sì infatti ho usato il tipo vector..avete qualche esempio da propormi?

    Assicurati di avere un compilatore C++ 20.

    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    struct Point {
        int x;
        int y;
        
        //serve alla funzione di ordinamento per poter fare confronti
        auto operator<=>(const Point&) const = default;
    };
    
    void rimuoviDuplicati(vector<Point>& in, vector<Point>& out)
    {
        if (in.empty()) return;
        
        sort(v.begin(), v.end());
        
        int i = 0;
        out.push_back(in[i]);
        while (i < in.size() - 1){
            if (in[i] != in[i + 1])
                out.push_back(in[i+1]);
        i++;
        }
    }
    
Devi accedere o registrarti per scrivere nel forum
3 risposte