Nowe posty

Autor Wątek: wysyłanie pojemnika vector do funkcji  (Przeczytany 8221 razy)

kamzor

  • Gość
wysyłanie pojemnika vector do funkcji
« dnia: 2009-10-15, 21:37:07 »
Witam!

potrzebuje wysłać pojemnik vector do funkcji (najlepiej przez referencje).

Nie mogę tego zrobić :(

Proszę o pomoc

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
wysyłanie pojemnika vector do funkcji
« Odpowiedź #1 dnia: 2009-10-15, 21:48:57 »
A tak nie działa?
void f( vector{int} &wektor )
{
  wektor.insert( ... );
  ...
}

int main()
{
  vector{int} w;
  f( w );
  ...
}
(forum wycina znaki mniejszości/większości, więc zasąpiłem je "{" i "}")

Offline Robert

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2516
    • Zobacz profil
wysyłanie pojemnika vector do funkcji
« Odpowiedź #2 dnia: 2009-10-15, 21:49:24 »
Napisz, jak to robisz, i jaki jest ew. tego efekt
Zanim popełnisz grafomaństwo: 1 | 2 | 3
Baza RPM Jak szukać informacji

chmooreck

  • Gość
wysyłanie pojemnika vector do funkcji
« Odpowiedź #3 dnia: 2009-10-16, 08:57:32 »
Cytat: ultr
A tak nie działa?
Tak to działa...

kamzor

  • Gość
wysyłanie pojemnika vector do funkcji
« Odpowiedź #4 dnia: 2009-10-16, 19:20:45 »
Cytat: chmooreck
Cytat: ultr
A tak nie działa?
Tak to działa...
Nie. tak to nie działa...

Kod:
#include 
#include

using namespace std;

void f( vector &wektor)
{
wektor.insert(4);
}

int main()
{
vector w;
f(w);
}
Odpowiedz:
mieszko@mieszko:~$ gedit wys.cpp
mieszko@mieszko:~$ g++ wys.cpp -o wys
wys.cpp: In function ‘void f(std::vector >&)’:
wys.cpp:8: error: no matching function for call to ‘std::vector >::insert(int)’
/usr/include/c++/4.3/bits/vector.tcc:94: note: candidates are: __gnu_cxx::__normal_iterator::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> > std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = int, _Alloc = std::allocator]
/usr/include/c++/4.3/bits/stl_vector.h:791: note:                 void std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = int, _Alloc = std::allocator]
Wersja g++:
mieszko@mieszko:~$ g++ --version
g++ (Ubuntu 4.3.3-5ubuntu4) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

chmooreck

  • Gość
wysyłanie pojemnika vector do funkcji
« Odpowiedź #5 dnia: 2009-10-16, 19:35:02 »
Cytat: kamzor
Cytat: chmooreck
Cytat: ultr
A tak nie działa?
Tak to działa...
Nie. tak to nie działa...
Tak to działa.

http://www.cplusplus.com/reference/stl/vector/insert/

kamzor

  • Gość
wysyłanie pojemnika vector do funkcji
« Odpowiedź #6 dnia: 2009-10-16, 20:27:09 »
Cytat: chmooreck
Cytat: kamzor
Cytat: chmooreck
Tak to działa...
Nie. tak to nie działa...
Tak to działa.

http://www.cplusplus.com/reference/stl/vector/insert/
Nie. Tak to nie działa.. Tak to powinno działać.

Więc dlaczego mi zwraca błąd kompilacji ?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
wysyłanie pojemnika vector do funkcji
« Odpowiedź #7 dnia: 2009-10-16, 21:40:26 »
A includujesz vector?

#include

chmooreck

  • Gość
wysyłanie pojemnika vector do funkcji
« Odpowiedź #8 dnia: 2009-10-16, 22:29:17 »
Cytat: kamzor
Cytat: chmooreck
Cytat: kamzor
Nie. tak to nie działa...
Tak to działa.

http://www.cplusplus.com/reference/stl/vector/insert/
Nie. Tak to nie działa.. Tak to powinno działać.

Więc dlaczego mi zwraca błąd kompilacji ?
A czytałeś jaki to błąd ?
Klasa vector nie ma metody insert() z jednym parametrem. Należy wskazać w którym miejscu wektora element (lub elementy) ma być wsadzony. Błąd który otrzymałeś nie ma nic wspólnego z przekazywaniem referencji na wektor, która działa tak, jak napisałeś.
Po coś wstawiłem ci linka do opisu metody insert...

kamzor

  • Gość
wysyłanie pojemnika vector do funkcji
« Odpowiedź #9 dnia: 2009-10-17, 11:52:14 »
Wybacz chmooreck ale zapomniałem o tym..
        Ogólnie nie chodziło o wstawianie do vectora tylko ostatnio nie mogłem wysłać. Nie wiem dlaczego bo robiłem tak jak teraz..Widocznie musiałem coś przeoczyć.

Dzięki za odpowiedź.. Temat do ZAMKNIĘCIA.

Pozdrawiam!