[C++] stl, klasa vector

Odpowiedz Nowy wątek
2011-01-21 21:53
kart
0

jak umozliwic realizacje w kodzie takiej linijki:

vecd = veci;

jesli vecd to kontener vector<double> a veci to vetor<int>

Mam problem bo nie mozna przeciazyc operatora= jako statycznej funkcji

z gory dzieki za info

Pozostało 580 znaków

2011-01-21 22:04
0

Napisz sobie klasę opakowującą (Wrapper) dla tego wektora dla <double>. W ten sposób w tej klasie przeciążysz sobie metodę.


Non nascuntur sed fiunt christiani :)
Nie masz kłopotów? Kup komputer...

[Na pw przyjmuje tylko zlecenia. Masz problem? Pisz na forum, nie do mnie]

Pozostało 580 znaków

2011-01-21 22:29
kart
0

no ale nie moge stworzyc klasy typu vector<double>

ewentualnie szablon vector<t>, o to chodzi?

Pozostało 580 znaków

2011-01-21 22:33
0

Nie. Możesz stworzyc klasę która będzie agregować w sobie interesujący cię wektor.


Non nascuntur sed fiunt christiani :)
Nie masz kłopotów? Kup komputer...

[Na pw przyjmuje tylko zlecenia. Masz problem? Pisz na forum, nie do mnie]

Pozostało 580 znaków

2011-01-21 22:41
kart
0
 
 vector<int> veci;
    vector<double> vecd;
 
    for (int i = 0; i < 10; ++i)
    {
       veci.push_back(i);
       //vecd.push_back(i);
    }
    vecd = veci;
 
    cout << veci << endl << vecd << endl;

ale main musi koniecznie wygladac tak jak powyzej, a n ie moge napisac czegos takiego:

class vector<double> { ... std::vector<double> a ... }

czyzby konieczne dla tego maina bylo napisanie od poczatku wlasnej implementacji kontenera vector ?

Pozostało 580 znaków

2011-01-21 22:47
0

Ale czemu main musi niby tak wyglądać? Tak czy siak nadal mozesz zrobić dokładnie to co napisałem, przy czym będziesz musiał zrobić mały przekręt z nazwami żebyś mógł jednocześnie stworzyc klasę o nazwie vector (co uważam za terroryzm, bo to bardzo mylące nadawać własnej klasie taką samą nazwę jak klasy z std::) i używać zwykłego vector.


Non nascuntur sed fiunt christiani :)
Nie masz kłopotów? Kup komputer...

[Na pw przyjmuje tylko zlecenia. Masz problem? Pisz na forum, nie do mnie]

Pozostało 580 znaków

2011-01-21 22:51
kart
0

przygotowuje sie do egzaminu - a to jeden z poprzednich lat (jedno z zadan) :)

ale jaki przekret ?
class jakas { std::vector<double> a ...}

typedef jakas vector<double>

?

Pozostało 580 znaków

2011-01-21 22:55
0

Bój ty sie Boga ;]
Wystarczy umiejętne wykorzystanie std:: i brak usinga.


Non nascuntur sed fiunt christiani :)
Nie masz kłopotów? Kup komputer...

[Na pw przyjmuje tylko zlecenia. Masz problem? Pisz na forum, nie do mnie]

Pozostało 580 znaków

2011-01-21 22:57
0

Chyba nie rozumiesz o co chodzi.

class MyDoubleVector : public std::vector<double> {
public:
  MyDoubleVector() : std::vector<double>() {}
  MyDoubleVector(const std::vector<double>& vec) : std::vector<double>(vec) {}
  MyDoubleVector(const std::vector<int>& vec) : std::vector<double>() {
    std::copy(vec.begin(), vec.end(), begin, end());
  }
}

Jeśli chcesz programować przeczytaj DRY&KISS

Pozostało 580 znaków

2011-01-21 22:58
kart
0

no tak, mozna sie pozbyc std poprzez using std::vector;

ale jaki ma to zwizek z moim problemem, ja nie rozumie jak nazwac szkielet tej klasy opakowujacej vector<double> ? :)

Pozostało 580 znaków

2011-01-21 23:00
kart
0

mozna dziedziczyc po stly ? (cos mi sie obilo o uszy ze nie - jak to jest ?)

ale nazwa tej klasy wumusza modyfikacje maina, czego nie wolno robic...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych 0, gości 1, botów: 0