Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sortowanie napisów w klasie vector

Ostatnio zmodyfikowano 2017-08-14 22:34
Autor Wiadomość
mrukat990
Temat założony przez niniejszego użytkownika
Sortowanie napisów w klasie vector
» 2017-08-14 20:10:15
Piszę program, który w pętli wczyta ze standardowego wejścia (klawiatury) tekst . Każda linijkę tekstu ma być w tablicy implementowanej przez klase vector , w takim miejscu aby tablica była posortowana po zakończeniu wpisywania. Przed zakończeniem programu ma być wypisana wypisz zawartość tablicy. Do przechowywania zmiennych tekstowych używam klasy string. Na razie napisałem coś takiego, ale nie wiem jak wpisywać w odpowiednie miejsce (sortowanie).
C/C++
#include <iostream>
#include <vector>
#include <string>
#include <conio.h>
#include <algorithm>

using namespace std;
class napis
{
public:
    string tekst;
    napis( string xtekst );
};

int main()
{
    vector < napis > osoba;
    cout << "Teksty\n1.-Lista tekstow \n2.-Dodaj tekst \n3.-Wyjscie" << endl;
    char odp;
    do
    {
        odp = getch();
        switch( odp )
        {
        case '1':
            cout << "\n\n\nLista osob:\n";
            for( int i = 0; i < osoba.size(); i++ )
            {
                cout << endl;
                cout << "Nazwa: " << osoba[ i ].tekst << endl;
            }
            break;
        case '2':
            cout << "\n\n\n|----DODAWANIE_OSOBY_DO_LISTY-----|";
            cout << "\nPodaj tekst: ";
            string odp_tekst;
            cin >> odp_tekst;
           
            osoba.push_back( napis( odp_tekst ) );
            cout << "\n<***ZAKONCZONO_Z_SUKCESEM***>";
            break;
        }
    } while( odp != '3' );
   
    return 0;
}

napis::napis( string xtekst )
    : tekst( xtekst )
{
}
 
P-163981
mateczek
» 2017-08-14 22:09:21
stringi c++ stl potrafi sam sortować.
C/C++
#include <iostream>
#include <string>
#include<algorithm>
#include<vector>

using namespace std;
int main() {
    vector < string > tablica { "kot", "tygrys", "ala" };
    sort( tablica.begin(), tablica.end() );
    for( int i = 0; i < tablica.size(); i++ ) {
        cout << tablica[ i ] << endl;
    }
}

natomiast jeśli do funkcji sort chcesz przekazać obiekty klasy własnej to musisz wyposażyć klasę w przeładowany operator "<" (lub dostarczyć funkcję, która będzie w stanie twoje obiekty porównać)
P-163986
mrukat990
Temat założony przez niniejszego użytkownika
» 2017-08-14 22:34:10
Wielkie dzieki za pomoc!
P-163990
« 1 »
  Strona 1 z 1