С++ для начинающих



         

Оператор вывода << - часть 4


     vector<string>::iterator iter_end = ppals.end();

           cout << "Это друзья Пуха: ";

           for ( ; iter != iter_end; iter++ )

                 cout << *iter << " ";

           cout << endl;

}

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

#include <iostream>

#include <algorithm>

#include <vector>

#include <string>

string pooh_pals[] = {

           "Тигра", "Пятачок", "Иа-Иа", "Кролик"

};

int main()

{

           vector<string> ppals( pooh_pals, pooh_pals+4 );

     vector<string>::iterator iter = ppals.begin();

     vector<string>::iterator iter_end = ppals.end();

           cout << "Это друзья Пуха: ";

     // копируем каждый элемент в cout ...

           ostream_iterator< string > output( cout, " " );

           copy( iter, iter_end, output );

           cout << endl;

}

Программа печатает такую строку:

Это друзья Пуха: Тигра Пятачок Иа-Иа Кролик

Упражнение 20.1

Даны следующие определения объектов:

string sa[4] = { "пух", "тигра", "пятачок", "иа-иа" };

vector< string > svec( sa, sa+4 );

string robin( "кристофер робин" );

const char *pc = robin.c_str();

int ival = 1024;

char blank = ' ';

double dval = 3.14159;

complex purei( 0, 7 );

(a)    Направьте значение каждого объекта в стандартный вывод.

(b)   Напечатайте значение адреса pc.

(c)    Напечатайте наименьшее из двух значений ival и dval, пользуясь оператором условного выражения:

ival < dval ? ival : dval




Содержание  Назад  Вперед