[Resolvido]Problema com vetores #include <vector>

Iniciado por edjin, 04 de Maio de 2011, 16:02

tópico anterior - próximo tópico

edjin

Estou estudando C++ (com apostila do Andre Duarte Bueno) por contra própria mas estou travado no exemplo de uso de vetores ...

#include <iostream>
#include <vector>

int main()
{
vector<int> v
int data;

std::cout << "No linux um ctrl+z encerra a entrada de dados. ";

do {
std::cout << "\nEntre com o dado (" << v.size () << "):";
std::cin >> data;
cin.get ();
if(cin.good ());
v.push_back (data);
   }
   
      while(cin.good ());
       
      std::cout << "\nPrineiro elemento do vetor= " << v.front ();
      std::cout << "\nUltimo elemento do vetor= " << v.back ();
       
      for(int i = 0; i < v.size (); i++) {    
            std::cout << "vetor[" << i << "]=" << v[i] << ' ';                                  
                                 }  
                                         
      std::cout << ( v.empty ()? "O vetor está vazio" : "O vetor não está vazio");
      v.clear();
      std::cout << ( v.empty ()? "O vetor está vazio" : "O vetor não está vazio");
      cin.get ();
       
      return 0;        
}

E me é retornado os seguinte erros:

$ g++ programa-vetor.cpp

Programa-vetor.cpp: In funçtion 'int main'
Programa-vetor.cpp:6: error 'vector' was not declared in this scoupe
Programa-vetor.cpp:6: error expected primary-expression before 'int'
Programa-vetor.cpp:6: error expected ';' before 'int'
Programa-vetor.cpp:12:error 'v' was not declared in this scoupe
Programa-vetor.cpp:14:error 'cin' was not declared in this scoupe
Programa-vetor.cpp:19:error 'cin' was not declared in this scoupe
Programa-vetor.cpp:21:error 'v' was not declared in this scoupe


Acredito que esses erros não são dificeis de resolver. No mais agradeço pela ajuda. :)

Darcamo

Comece vendo as mensagens de erro pelo começo para identificar o problema (muitos erros do final são consequências de erros anteriores).
A primeira mensagem de erro útil é
Programa-vetor.cpp:6: error 'vector' was not declared in this scoupe

Mas aí você diz "Ora, mas eu incluí o cabeçalho do vector. Por que que ele diz que vector não foi declarado?".
É que na verdade o tipo não é apenas "vector", mas sim "std::vector". Ou seja, é necessário indicar o namespace também, que no caso da biblioteca padrão é "std".

A mesma coisa vale para o "cin" e para o "cout" (por isso que tem erros dizendo que eles não foram declarados mesmo você tendo incluído o cabeçalho do iostream onde eles são definidos).

Mas para não ter que escrever "std::" na frente de tudo quanto é coisa da biblioteca padrão basta colocar a linha abaixo antes do main.
using namespace std;

Fora isso faltou apenas um ";" depois do "vector<int> v", que é o que causa a mensagem de erro
error expected ';' before 'int'