2016-06-22 2 views
0

私は初心者です。要素をベクターにプッシュして、トラバース中に要素を表示する次の簡単なプログラムは、正しく機能しません。コンパイラは「式:ベクトル反復子はデレンケーブルではありません」と述べています。 誰でもこのことについて私を助けることができますか?ベクトルエレメントの印刷エラーメッセージ

#include <iostream> 
    #include<vector> 
    int main() 
    { 
    int n; 
    std::vector<int>x; 
    std::vector<int>::iterator it; 
    for (it = x.begin(); it != x.end(); ++it) 
    { 
     std::cout << "enter an element in the vector:" << "\n"; 
     std::cin >> n; 
     x.push_back(n); 
     std::cout << "vector:" << "\n"; 
     std::cout << *it; 
    } 

    return 0; 
    } 
+1

はあなたと開始するには、* 2つの*ループを必要とします。 –

+0

あなたの問題については、*実際のエラーを完全かつ未編集で問題の本文にコピー&ペーストしてください。そして、ソース内のどこにエラーがあるのか​​を指摘します(たとえば、コメントによって)。 –

+0

push_back()はイテレータを無効にできます。ヨアヒムが提案する2つのループ。 – doug

答えて

0

2つの反復子が選びだし、すなわち、IT1とIT2変数です。 it1は、ベクトルへの入力の格納に使用されます。ベクトルの初期入力がここに格納されます。

std::vector<int>::iterator it1; 
it1=x.begin(); 
std::cout << "enter an element in the vector: " << "\n"; 
std::cin >> n; 
x.push_back(n); 

が入り、ループを終了するには '-1'

while(n!=-1) 
{ 
++it1; 
std::cout << "enter an element in the vector: " << "\n"; 
std::cin >> n; 
x.push_back(n); 
} ; 

IT2をベクターからの出力を表示します。

for(it2 = x.begin(); it2 != x.end(); ++it2) 
    std::cout<<*it2<<" ";//no need of curly braces for single for statement 

「 完全な作業プログラム:データを入力するための一つの、もう1つは、データを印刷する:

#include <iostream> 
#include<vector> 

int main() 
{ 
    int n; 
    std::vector<int> x; 
    std::vector<int>::iterator it1; 
    std::vector<int>::iterator it2; 
    it1=x.begin(); 
    std::cout << "enter an element in the vector: " << "\n"; 
    std::cin >> n; 
    x.push_back(n); 

    while(n!=-1) 
    { 
    ++it1; 
    std::cout << "enter an element in the vector: " << "\n"; 
    std::cin >> n; 
    x.push_back(n); 
    }; 

    std::cout<<"Vector : "; 
    for(it2 = x.begin(); it2 != x.end(); ++it2) 
    std::cout<<*it2<<" " ; 

    return 0; 
} 
+0

2つのループ、各イテレータに対して1つ作成されます。初期条件はit1の最初のループに設定されます。つまり、it1 = x.begin()とwhile(n!= - 1) –

+1

_名前空間として 'std'を使用すると、 "std ::" _を繰り返すのに多くの労力が節約されます。 – user975989

+0

2つのループを試しましたが、まだこのエラーメッセージが表示されています –