|
Программирование >> Инициализация объектов класса, структура
Эти три шага представляют собой полную итерацию цикла for. Теперь шаги 2 и 3 будут повторяться до тех пор, пока условие не станет равным false, т.е. ix окажется равным или большим sz. В инструкции-инициализации можно определить несколько объектов, однако все они for ( int ival = 0, *pi = &ia, &ri = val; ival < size; ++iva1, ++pi, ++ri ) должны быть одного типа, так как инструкция объявления допускается только одна: Объявление объекта в условии гораздо труднее правильно использовать: такое объявление должно хотя бы раз дать значение false, иначе выполнение цикла никогда #include <iostream> int main() { for ( int ix = 0; bool done = ix == 10; ++ix cout << ix: << ix << endl; не прекратится. Вот пример, хотя и несколько надуманный: Видимость всех объектов, определенных внутри круглых скобок инструкции for, ограничена телом цикла. Например, проверка iter после цикла вызовет ошибку int main() string word; vector< string > text; vector< string >::iterator iter = text.begin(), iter end = text.end( iter != text.end(); ++iter ) if ( *iter == word ) break; ... ошибка: iter и iter end невидим! if ( iter != iter end ) компиляции8: Примечание [O.A.2]: Нумера ция сносок сбита, как и вся остальная. Необходима проверка. 8 До принятия стандарта языка С++ видимость объектов, определенных внутри круглых скобок for, простиралась на весь блок или функцию, содержащую данную инструкцию. Например, употребление двух циклов for внутри одного блока верно для стандарта С++ в пред1дущих версиях C++ - ошибка: ival определена дважды for (int ival = 0; ival < size; ++iva1 ) ... for (int ival = size-1; ival > 0; ival ) ... в ранних версиях языка вызывало ошибку: ival определена дважды. В стандарте С++ данный текст синтаксически правилен, так как каждый экземпляр ival является локальным для своего блока. ... Упражнение 5.8 for ( int *ptr = &ia, ix = 0; ix < size && ptr != ia+size; ++ix, ++ptr ) ... Допущен! ли ошибки в нижеследующих циклах for? Если да, то какие? (b) for ( ; ; ) { if ( some condition ) break; ... int ix; for ( ix < sz; ++ix ) ... for ( int ix = 0; ix < sz; ++ix, ++ sz ) ... Упражнение 5.9 Представьте, что вам поручено придумать общий стиль использования цикла for в вашем проекте. Объясните и проиллюстрируйте примерами правила использования каждой из трех частей цикла. Упражнение 5.10 bool is ea1( const vector<int> &vl, Дано объявление функции: const vector<int> &v2 ); Напишите тело функции, определяющей равенство двух векторов. Для векторов разной длины сравнивайте только то количество элементов, которое соответствует меньшему из двух. Например, векторы (0,1,1,2) и (0,1,1,2,3,5,8) считаются равными. Длину векторов можно узнать с помощью функций v1.size() и v2.size() . 5.6. Инструкция while while ( условие ) Синтаксис инструкции while следующий: инструкция Пока значением условия является true, инструкция в1полняется в такой последовательности: 1. Вычислить условие. 2. В1полнить инструкцию, если условие истинно. for ( int ix = 0; ix < sz; ++ix ) ... if ( ix != sz ) ...
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |