[C++] Pojemniki std::vector oraz szablony
Ostatnio zmodyfikowano 2013-01-12 23:29
kkaska89 Temat założony przez niniejszego użytkownika |
[C++] Pojemniki std::vector oraz szablony » 2013-01-10 23:35:12 Witam :) Dostałam na zajęciach program do napisania, ale niestety nie miałam na zajęciach w ogóle nic o pojemnikach. Szukałam podobnego programu na forum i różnych stronach i nie udało mi się nic znaleźć aby coś napisać. Problemem głównie jest użycie szablonu template. Treść zadania Pojemnik vector wypełnij interakcyjni liczbami (int, long,float,double) - użyj szablonu (template). Posortuj zawartosc od najmniejszej do największej metoda bąbelkową. Ma to być napisane w języku c++. |
Napisałam program ale z samym int, i nie mam pojęcia jak to przerobić by był ten szablon template. Może ktoś z Was spotkał się z tym problemem i zechciałby mi pomóc. #include <iostream> #include <vector>
using namespace std; int main() { int n, x, temp; vector < int > tab; x = 0; cout << "Podaj ile liczb chcesz wprowadzic: "; cin >> n; cout << endl; for( int i = 0; i < n; i++ ) { cout << "Podaj " << i + 1 << " liczbe: "; cin >> x; tab.push_back( x ); } cout << endl; for( int i = 0; i < tab.size(); i++ ) { cout << tab[ i ] << ", "; } for( int i = 0; i < tab.size(); i++ ) { for( int j = 0; j < tab.size() - 1; j++ ) { if( tab[ j ] > tab[ j + 1 ] ) { temp = tab[ j ]; tab[ j ] = tab[ j + 1 ]; tab[ j + 1 ] = temp; } } } cout << " Po posortowaniu" << endl; for( int i = 0; i < tab.size(); i++ ) { cout << tab[ i ] << ", "; } return 0; } |
|
DejaVu |
» 2013-01-10 23:53:31 Wydaje mi się mało prawdopodobne, abyś miała obsłużyć wszystkie cztery typy w swoim programie. Nie jest napisane do czego masz użyć szablonu. std::vector jest szablonem samym w sobie. Poza tym jest napisane 'użyj', a nie 'napisz' ani 'utwórz'. |
|
crash |
» 2013-01-11 01:56:55 Podobnie mnie się zdaje do DejaVu, ale tak na wszelki wypadek: #include <iostream> #include <vector>
using namespace std;
template < typename Typ > void szablonowa() { Typ n, x, temp; vector < Typ > tab; x = 0; cout << "Podaj ile liczb chcesz wprowadzic: "; cin >> n; cout << endl; for( int i = 0; i < n; i++ ) { cout << "Podaj " << i + 1 << " liczbe: "; cin >> x; tab.push_back( x ); } cout << endl; for( int i = 0; i < tab.size(); i++ ) { cout << tab[ i ] << ", "; } for( int i = 0; i < tab.size(); i++ ) { for( int j = 0; j < tab.size() - 1; j++ ) { if( tab[ j ] > tab[ j + 1 ] ) { temp = tab[ j ]; tab[ j ] = tab[ j + 1 ]; tab[ j + 1 ] = temp; } } } cout << " Po posortowaniu" << endl; for( int i = 0; i < tab.size(); i++ ) { cout << tab[ i ] << ", "; } return 0; }
int main() { for(;; ) { char x; cout << "[1]int\n[2]long\n[3]float\n[4]double\n[x]koniec"; cin >> x; switch( x ) { case 'x': return 0; case '1': szablonowa < int >(); break; case '2': szablonowa < long >(); break; case '3': szablonowa < float >(); break; case '4': szablonowa < double >(); break; default: cout << "\n\n>>Nieprawidlowy wybor\n"; } cout << endl << endl; } }
|
|
kkaska89 Temat założony przez niniejszego użytkownika |
» 2013-01-12 23:14:35 A może wiecie jak zastosować coś takiego w tym moim programie, bo ja już próbuję i próbuję i nie przynosi to żadnych efektów. Jeśli ktoś z Was wie jak to rozwiązać to proszę o pomoc. Bo mi się wydaje że mam wprowadzić wszystkie 4 typy do jednego pojemnika i to posortować, no chyba że błędnie interpretuję zadanie.
template <class T> class Wektor { private: T a; T b;
};
w main Wektor<int> wektorSkladoweJakoInty; Wektor<double> WektorSkladoweJakoDouble; Wektor<Wektor> wektorSkladowejakoWektory; |
|
DejaVu |
» 2013-01-12 23:29:07 Bo mi się wydaje że mam wprowadzić wszystkie 4 typy do jednego pojemnika i to posortować, no chyba że błędnie interpretuję zadanie.
|
Raczej błędnie interpretujesz zadanie, bowiem nie będziesz wiedziała po której wartości sortować. Poza tym pierwsze dwa użycia szablonu powinny zadziałać, a trzeci jest niedozwolony, bo jest to odwołanie do nieprawidłowego typu. |
|
« 1 » |