jak w cout wyświetlić zawartość listy

0

Witam mam problem z wyrzuceniem zawartości list w cout.

#include <iostream>
#include <list>
#include <cstdio>
int main()
{
    int how;
    std::cin >> how;
    std::list<char> word (how,200);
    char words;
    int test = {};
    while (std::cin >> words && test == how)
    {
        word.push_back(words);
        test++;
    }
//    for ( std::list<char>::iterator iter = word.begin() ; iter < word.end() ; iter++)
        std::cout << "*" << word.size();
    return 0; 

chciałem by pod koniec tego programy wyświetlił mi się napis który wpisałem w liste.

2

Można tak:

for (int element : list) {
  std::cout << element << ' ';
}

albo np. tak:

std::copy(list.cbegin(), list.cend(), std::ostream_iterator<int>(std::cout, " "));

http://ideone.com/L2CZ0z

0

Zakładając, że masz już listę z tymi znakami to wyświetlić można w ten sposób

for (std::list<char>::iterator iter = word.begin(); iter != word.end(); ++iter)
    cout << *iter;

Albo krócej

for (auto iter = word.begin(); iter != word.end(); ++iter)
    cout << *iter;

Albo jeszcze krócej

for (auto i : word)
    cout << i;

Zwróc uwagę, że jest

iter != word.end()

a nie

iter < word.end()

bo iterator listy nie jest iteratorem swobodnego dostępu (RandomAccessIterator), więc nie można używać operatora <.

Dalej, naucz się pisać ++iter a nie iter++, żeby nie tworzyć niepotrzebnej kopii.

Natomiast Twój kod tworzenia listy też nie zadziała, bo

std::list<char> word (how,200)

co to niby ma robić? Przecież potem używasz push_back(), więc lista powinna być na początku pusta.

while (std::cin >> words && test == how)

Co ten warunek test == how ma robić?

0
#include <iostream>
#include <list>
#include <cstdio>

using namespace std;

void sposob1()
{
    int Count;
    cin >> Count;
    list<char> words;

    while(Count--)
    {
        char word;
        cin >> word;
        words.push_back(word);
    }
    for(auto &w : words)
     cout << w;

}
void sposob2()
{
    string s;
    cin >> s;
    list<char> words;
    for(auto &w : s)
     words.push_back(w);
    for(auto &w : words)
        cout << w;
}

int main()
{
    sposob1();
    sposob2();
    return 0;
}

 

1 użytkowników online, w tym zalogowanych: 0, gości: 1