Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] trovare valori con presenze multiple nel vector <int>

    Ho un vector di questo tipo:

    codice:
    interi = {1,1,3,44,2,78,45,44,90};
    dovrei semplicemente crearne due nuovi popolandone uno con i valori presenti più volte in interi e l'altro con quelli rimanenti (presenti una sola volta in interi) per ottenere ad esempio due nuovi vector <int>:

    codice:
    interipresenzemultiple=  {1,44};
    interipresenzesingole=  {3,2,78,45,90};
    thanks


  2. #2
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Re: [c++] trovare valori con presenze multiple nel vector <int>

    Originariamente inviato da freetom
    Ho un vector di questo tipo:

    codice:
    interi = {1,1,3,44,2,78,45,44,90};
    dovrei semplicemente crearne due nuovi popolandone uno con i valori presenti più volte in interi e l'altro con quelli rimanenti (presenti una sola volta in interi) per ottenere ad esempio due nuovi vector <int>:

    codice:
    interipresenzemultiple=  {1,44};
    interipresenzesingole=  {3,2,78,45,90};
    thanks

    risolto da solo

    In pratica ho risolto con un ciclo sui due array (uno di confronto fisso e l'altro dinamico) e con un incremento opportuno di un contatore...


  3. #3
    Credo ti basti usare semplicemente l'algoritmo count:

    Codice PHP:
    #include <vector>
    #include <algorithm>
    #include <iostream>

    using namespace std;

    void fill(vector<int>& vi)
    {
        
    vi.push_back(1);
        
    vi.push_back(1);
        
    vi.push_back(1);
        
    vi.push_back(3);
        
    vi.push_back(44);
        
    vi.push_back(2);
        
    vi.push_back(78);
        
    vi.push_back(45);
        
    vi.push_back(44);
        
    vi.push_back(90);
    }

    int main()
    {

        
    vector<intvi;
        
    vector<intvm;
        
    vector<intvs;    
        
        
    fill(vi);

        
    // Riempimento
        
    for(vector<int>::iterator iter vi.begin(); iter != vi.end(); iter++)
        {
            if( 
    count(vi.begin(), vi.end(), *iter) > ) {
                if (
    count(vm.begin(), vm.end(), *iter) == 0)        
                    
    vm.push_back(*iter);        
            }
            else {
                
    vs.push_back(*iter);        
            }
        }
        
        for(
    vector<int>::iterator iter vm.begin(); iter != vm.end(); iter++)
            
    cout << *iter << " | ";
        
    cout << endl;

        for(
    vector<int>::iterator iter vs.begin(); iter != vs.end(); iter++)
            
    cout << *iter << " | ";
        
    cout << endl;    

    Output:

    1 | 44
    3 | 2 | 78 | 45 | 90


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.