2009-05-26 12 views

答えて

3

あなたはコンソール入力から読み込んでストリングに格納する方法を知りたいですか?(これはリスト内に格納されています)、これが最初のケースです。出力リストの内容):

#include <iostream> 
#include <string> 
#include <list> 

using std::string; 
using std::list; 
using std::cout; 
using std::endl; 

list<string> strlist; 

strlist.push_back(string("string one")); 
strlist.push_back(string("string two")); 
strlist.push_back(string("and so on")); 

for (list<string>::iterator it = strlist.begin(); it != strlist.end(); ++it) 
{ 
    std::cout << (*it) << std::endl; 
} 

注:リストには、リストからそれらを返すときに、リストに割り当てるとしたときに文字列をコピーし終わる意味、文字列のコピーを保持しています。あなたが文字列のためのメモリを割り当てることができ、リスト内のポインタだけを保持することを避けるために:

list<string*> ls; 
ls.push_back(new string("string one")); 

など。

これは、上記のようにうまく機能は、コピーアルゴリズムでそれはすべて舞台裏で起こる、リストの要素にアクセスする方法を見て、より冗長です:

copy(strlist.begin(), strlist.end(), ostream_iterator<string>(cout, ", ")); 
+0

ありがとうMr.StefanB – Cute

+0

Stringの代わりにクラスのオブジェクトをアイテムとして使用できますか?例えば、私が定義した特定の自分のクラスのオブジェクトを持っているとします。 ? @stefanB – gumuruh

0

あなたはのstd ::コピーを使用することができますのstd :: ostream_iteratorではそうのような出力に要素をコピーするには:

#include <iostream> 
#include <string> 
#include <list> 
#include <algorithm> 

int main(int, char*[]) 
{ 
    using namespace std; 

    list<string> mylist; 

    mylist.push_back("String1"); 
    mylist.push_back("String2"); 
    mylist.push_back("String3"); 

    copy(mylist.begin(), mylist.end(), ostream_iterator<string>(cout, ", ")); 
} 
関連する問題