Program z klasą vector.ERROR!!

0

Moim zadaniem było poprawienie błedów w tym programie. Niestety moje wielokrotne próby nie przyniosły rezultatu i prosiłabym o pomoc. |22|error: no match for 'operator<<' in 'std::cout << v'|.....co chwile wyskakuje mi tego typu błąd o co w tym chodzi??

 #include <iostream>
#include <vector>
#include <ostream>
#include <string>

using namespace std;

int main()
{
    int a;
    cout <<"Podaj liczbe calkowita: \n";
    cin>>a;
    string nazwa;
    nazwa = "Ala";
    vector <int> v;

    for(unsigned int i=0; i <=nazwa.size(); ++i)

    v.push_back(nazwa[i]);
    v.push_back(a);

     cout << v;
    return 0;
}
0
cout << v;

Tak się nie da. v jest u Ciebie vectorem.

0

A w jaki sposób to poprawić ? Miałem kiedyś coś podobnego i nie wiedziałem jak to zrobić

0
for(int x : v) cout << x;
0

Użyj funkcji składowej std::vector'a: at(int) lub operator

1
for(int i = 0; i < v.size(); i++)
{
    cout << v[i] << ", ";
}
 
#include <algorithm>
#include <iterator>

copy(v.begin(), v.end(), ostream_iterator<int>(cout, ", ");
vector<int>::iterator it = v.begin();

while(it != v.end())
{
    cout << *it << ", ";
    ++it;
} 
0

for(int x : v) cout << x;

w Visualu od wersji 2005 bodajże albo 2008 można tak

for each (int x in v) cout << x;

no ale to niestandardowe rozszerzenie. dopiero VS2012 będzie obsługiwał zapis z dwukropkiem.

w Qt jest też podobne makro:

foreach(int x,v) cout << x;
0

Wersja STL / SGI:

template<class T> struct print : public unary_function<T, void>
{
  print(ostream& out) : os(out) {}
  void operator() (T x) { os << x << ' '; }
  ostream& os;
};

for_each(v.begin(), v.end(), print<int>(cout));

http://ideone.com/IfJYA

http://www.sgi.com/tech/stl/for_each.html

Wersja Boost:

#include <iostream>
#include <boost/foreach.hpp>

#define foreach BOOST_FOREACH

foreach( int x, v )
{
    cout << x << ", ";
}

Nie testowane, na podstawie:
http://www.boost.org/doc/libs/1_46_1/doc/html/foreach.html

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