Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
Was meinst du damit? Kannst du mal was Code zeigen?ein Array wo nur AnsiString's
Original geschrieben von Thomas Darimont
Schau mal hier: http://www.sortieralgorithmen.de/ da findest du eine Erklärung, Laufzeitschätzung und Implementierung für so ziemlich jeden Sortieralgorithmus
Original geschrieben von Kachelator
Was meinst du damit? Kannst du mal was Code zeigen?
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
class artikel
{
public:
std::string name_;
int nummer_;
std::string gruppe_;
int anzahl_;
float preis_;
//- praktischer Konstruktor:
artikel( const std::string& name,
int nummer,
const std::string& gruppe,
int anzahl,
float preis )
: name_( name ), nummer_( nummer ), gruppe_( gruppe ), anzahl_( anzahl ), preis_( preis )
{}
//- praktisch für Ausgabe: <<-Operator
friend std::ostream& operator <<( std::ostream& of, const artikel& a );
// Vergleichoperator für Sortierung nach name_;
friend struct vergleiche_name;
// Vergleichoperator für Sortierung nach nummer_;
friend struct vergleiche_nummer;
};
std::ostream& operator <<( std::ostream& of, const artikel& a )
{
of << a.name_ << ", "
<< a.nummer_ << ", "
<< a.gruppe_ << ", "
<< a.anzahl_ << ", "
<< a.preis_ << std::endl;
return of;
}
// Zwei Funktoren als Vergleichsoperatoren:
struct vergleiche_name
{
bool operator()( const artikel& lhs, const artikel& rhs ) const
{
return lhs.name_ < rhs.name_;
}
};
struct vergleiche_nummer
{
bool operator()( const artikel& lhs, const artikel& rhs ) const
{
return lhs.nummer_ < rhs.nummer_;
}
};
// dasselbe als Funktionen:
bool vergleiche_name_func( const artikel& lhs, const artikel& rhs )
{
return lhs.name_ < rhs.name_;
}
bool vergleiche_nummer_func( const artikel& lhs, const artikel& rhs )
{
return lhs.nummer_ < rhs.nummer_;
}
int main(int argc, char* argv[])
{
typedef std::vector< artikel > artikel_container_typ;
artikel_container_typ lager;
lager.reserve( 5 ); // platz reservieren
// lager füllen
lager.push_back( artikel( "Schrauben", 1245, "Wekzeug [sic!]", 10, 1.35f ) );
lager.push_back( artikel( "Hammer", 1276, "Wekzeug [sic!]", 6, 1.15f ) );
lager.push_back( artikel( "Bohrer", 1357, "Wekzeug [sic!]", 3, 1.00f ) );
lager.push_back( artikel( "Dübel", 2896, "Wekzeug [sic!]", 10, 1.96f ) );
lager.push_back( artikel( "Nägel", 7096, "Wekzeug [sic!]", 2, 2.35f ) );
// ausgeben
std::cout << "*** Lager: ********" << std::endl;
std::copy( lager.begin(), lager.end(), std::ostream_iterator<artikel>( std::cout ) );
// sortieren nach name mit Funktor
std::sort( lager.begin(), lager.end(), vergleiche_name() );
// // sortieren nach name mit Funktion
// std::sort( lager.begin(), lager.end(), vergleiche_name_func );
// ausgeben
std::cout << "*** Lager nach name: ********" << std::endl;
std::copy( lager.begin(), lager.end(), std::ostream_iterator<artikel>( std::cout ) );
// sortieren nach name mit Funktor
std::sort( lager.begin(), lager.end(), vergleiche_nummer() );
// // sortieren nach name mit Funktor
// std::sort( lager.begin(), lager.end(), vergleiche_nummer_func );
// ausgeben
std::cout << "*** Lager nach nummer: ********" << std::endl;
std::copy( lager.begin(), lager.end(), std::ostream_iterator<artikel>( std::cout ) );
char c;
std::cin >> c;
return 0;
}
Original geschrieben von Matthias Reitinger
@sqeaker: Wie wäre es denn mal mit einem Tutorial über eine kleine Auswahl von Sortieralgorithmen, du scheinst da recht firm zu sein