2017-10-29 11 views
0

リストのベクトルを使用して情報を格納し、リスト内の中間のアイテムを削除してリストを再度印刷しようとしています。私はどのようにベクトルに格納されているリストの個々の変数にアクセスするか、または要素を削除する方法がわかりません。リストのベクトル内の要素を削除して現在のリストを表示

「puppy」という要素をリストから削除しようとしています。

#include <iostream> 
#include <string> 
#include <vector> 
#include <list> 
using namespace std; 

int main() { 

    vector<list<string>> hashT; 
    hashT.resize(3); 
    int index = 0; 

    hashT[0].push_back("hello"); 
    hashT[0].push_back("Puppy"); 
    hashT[0].push_back("friend"); 

    typename list<string>::iterator it = hashT[0].begin(); 

    for (; it != hashT[0].end(); ++it) 
    { 
     index = 0; 
     //print lists? 
     cout << *it; 
     //delete puppy? 
     hashT[0].erase(hashT[0].begin() + index) 
     //print list? 
     index++; 
    } 


    return 0; 
} 

現在のコード -

#include <iostream> 
#include <string> 
#include <vector> 
#include <list> 
using namespace std; 

int main() { 

    vector<list<string>> hashT; 
    hashT.resize(3); 
    int index = 0; 

    hashT[0].push_back("hello"); 
    hashT[0].push_back("Puppy"); 
    hashT[0].push_back("friend"); 

    typename list<string>::iterator it = hashT[0].begin(); 

    for (; it != hashT[0].end(); ++it) 
    { 

     if(*it == "Puppy") 
     { 
      hashT[0].erase(it); 
     } 
    } 

    typename list<string>::iterator it2 = hashT[0].begin(); 

     for (; it2 != hashT[0].end(); ++it2) 
     { 
      cout << *it2; 
     } 


    return 0; 
} 

それはまだ、すべての3つの値を印刷しています。

+0

'hashT [0] .push_back(" hello ");'これは既に定義されていない動作を示しています。 'hashT'は空であり、要素はありません。 'hashT [0]'は範囲外のインデックスにアクセスします。 –

+0

@IgorTandetnik hashT.resize(3)を実行して、要素を削除する方法を(ありがとう)印刷しました。私は、サイズ変更のコードを編集します。 – upsidedownturtle

+0

どのように* * *要素を削除しますか?あなたが達成しようとしていることはまったく明確ではありません。 –

答えて

0
#include <iostream> 
#include <string> 
#include <vector> 
#include <list> 
using namespace std; 

int main() { 

    vector<list<string>> hashT; 
    hashT.resize(3); 


    hashT[0].push_back("hello"); 
    hashT[0].push_back("Puppy"); 
    hashT[0].push_back("friend"); 

    typename list<string>::iterator it = hashT[0].begin(); 

    for (; it != hashT[0].end(); it++) 
    { 
     if(*it == "Puppy") 
     { 
      hashT[0].erase(it); 
      break; 
     } 
    } 

    typename list<string>::iterator it2 = hashT[0].begin(); 

    for (; it2 != hashT[0].end(); ++it2) 
    { 
     cout << *it2; 
    } 
    cout << endl; 


    return 0; 
} 
関連する問題