Как отобразить элементы списка в vc ++? - PullRequest
1 голос
/ 26 мая 2009

Как заполнить элементы списка (строки) в окне консоли в c ++ cli.

Ответы [ 2 ]

3 голосов
/ 26 мая 2009

Вы после следующего или хотите знать, как читать с консоли ввода и хранить в строке (которая затем сохраняется в списке, я предполагаю), это первый случай, как хранить строки в списке (и вывод содержимое списка):

#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 голосов
/ 26 мая 2009

Вы можете использовать std :: copy в и 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, ", " ) );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...