Wątek zablokowany 2013-10-20 00:19 przez madmike.

Vector i typ obiektowy czy jest to możliwe?

0

No właśnie. Czy coś takiego jest w ogóle możliwe? Nie znam do końca struktury vectora, ale owy zapis....

class JakisTyp {
   //Konstruktor Z parametrami
}

(...) 
vector<JakisTyp> wektor;

Nie powoduje błedu...

Czym są elementy wektora w tym przypadku? czy to są oddzielne obiekty, z których można wywołać konstruktory z parametrami?
Wiem że pytanie może być głupie, ale widziałem w internecie użycie vectora tylko z takimi typami jak int, string, itp.

dodanie znaczników <code class="cpp"> - fp

4

A czemu miałoby nie być możliwe? Elementy wektora to w tym przypadku obiekty klasy JakisTyp. Nie wolałbym jednak konstruktora na obiekcie, bo jaki miałoby to sens?
Zauważ ze wektor tak zadeklarowany jest pusty, tzn nie ma żadnych elementów. Musisz je tam dodać

JakisTyp obiekt1(1,2,3,"dupa");
vector<JakisTyp> wektor;
wektor.push_back(obiek1);
2

No prawie:

#include <vector>
#include <iostream>
using namespace std;

class JakisTyp
  {
   public:
   JakisTyp(int,int) {}
  };

int main()
  {
   vector<JakisTyp> wektor(10,JakisTyp(0,0));
   return 0;
  }

http://ideone.com/Sh0g9e

0

Aha. To owe słówko push_back.

Dzięki, już rozumiem. Temat można zamknąć.

3

Nie zamknąć (zresztą na tym forum nie ma zwyczaju zamykania tematów), bo w C++11 jest też funkcja emplace_back, która bezpośrednio przyjmuje parametry, które normalnie się podaje konstruktorowi.

Czyli jeśli masz konstruktor JakisTyp::JakisTyp(int,int), to na wektorze można wykonać

wektor.emplace_back(2,4);

i spowoduje to skonstruowanie nowego elementu w wektorze tak, jakby był utworzony przez JakisTyp(2,4).

0

Tak, wiem, ale już zdążyłem o tym przeczytać. ;-)
Google nie gryzie, nieprawdaż? ;-)

1

Tak jeszcze dla wyjaśnienia dlaczego do vectora można podawać typ własny.

vector w języku C++ wykorzystuje mechanizm szablonów. Bez niego dla każdego typu obiektu trzeba by programować całą strukturę dynamiczną (np. listę na wskaźnikach), o ile potrzebujemy dynamicznie zmieniającą się strukturę danych.

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