Comment imprimer des éléments dans un vecteur c++
Je vais avoir des ennuis avec mon void fonction d'impression pour imprimer ce vecteur. Je ne suis pas tout à fait sûr de ce que c'est d'en parler avec "std::allocator. J'obtiens ces erreurs:
st1.cpp: In function ‘void Print(std::vector<int, std::allocator<int> >)’:
st1.cpp:51: error: declaration of ‘std::vector<int, std::allocator<int> > v’ shadows a parameter
Voici le fichier:
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
void Initialize();
void Print();
int main()
{
stack<string> s1, s2;
s1.push("b");
s2.push("a");
if (s1.top() == s2.top())
{
cout << "s1 == s2" << endl;
}
else if (s1.top() < s2.top())
{
cout << "s1 < s2" << endl;
}
else if (s2.top() < s1.top())
{
cout << "s2 < s1" << endl;
}
else
{
return 0;
}
vector<int> v;
Initialize();
Print();
}
void Initialize(vector<int> v)
{
int input;
cout << "Enter your numbers to be evaluated: " << endl;
while(input != -1){
cin >> input;
v.push_back(input);
//write_vector(v);
}
}
void Print (vector<int> v){
vector<int> v;
for (int i=0; i<v.size();i++){
cout << v[i] << endl;
}
}
Je veux juste l'impression v à l'écran. Toute aide?
Avez-vous regardé à l'endroit où le compilateur points vous trop?
OriginalL'auteur TheNameHobbs | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
Votre déclaration de fonction et définition ne sont pas compatibles, vous voulez générer des vecteurs de
Initialize
, vous pouvez le faire:Pour imprimer vecteur:
Maintenant, vous appelez:
N'oubliez pas de changement de définition de la fonction de
Initialize
,Print
pour correspondre à la nouvelle signature que j'ai fournis ci-dessus.Aussi, vous sont en train de redéfinir une variable locale
v
qui ombres paramètre de la fonction, il vous suffit de commenter cette ligne, aussi pass vecteur const ref:voir ma réponse mis à jour
OriginalL'auteur billz
Vous devez passer par référence const et supprimer le superflu et de vecteur.
Une autre façon d'imprimer serait d'utiliser les itérateurs de la sorte:
Ou en C++11, vous pouvez le faire comme ceci:
Je ne pense pas que votre
Initialize()
fonction fonctionne comme vous l'attendez. Il semble tout simplement faire une copie et puis, il se défait, de ne pas modifier les valeurs de l'existant vecteur.Vrai, mais c'est un bon conseil pour const exactitude puisqu'il n'est pas de modifier quoi que ce soit dans la fonction.
OriginalL'auteur Rapptz