На этом шаге мы рассмотрим пример создания и использования перечисляемого подмножества.
Следующая программа показывает, как использовать перечисляемые подмножества элементов:
// pr441_1.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <valarray> #include <conio.h> //необходимо для getch() using namespace std; // Построчный вывод массива значений template<class T> void printValarray (const valarray<T>& va, int num) { for (int i=0; i<va.size()/num; ++i) { for (int j=0; j<num; ++j) { cout << va[i*num+j] << ' '; } cout << endl; } cout << endl; } int _tmain(int argc, _TCHAR* argv[]) { locale::global(locale("rus")); // Создание массива значений с 12 элементами valarray<double> va(12); // Инициализация массива значениями 1.01, 2.02, ... 12.12 for (int i=0; i<12; i++) { va[i] = (i+1) * 1.01; } cout << "Исходный массив:\n"; printValarray(va,4); // Создание массива индексов // - ВНИМАНИЕ: элементы должны относиться к типу size_t valarray<size_t> idx(4); idx[0] = 8; idx[1] = 0; idx[2] = 3; idx[3] = 7; // Вывод девятого, первого, четвертого и восьмого элементов // с использованием перечисляемого подмножества cout << "Вывод девятого, первого, четвертого и восьмого элементов:\n"; printValarray(valarray<double>(va[idx]), 4); // Изменение первого и четвертого элементов // и повторный вывод перечисляемого подмножества va[0] = 11.11; va[3] = 44.44; cout << "Повторный вывод перечисляемого подмножества:\n"; printValarray(valarray<double>(va[idx]), 4); // Выбор второго, третьего, шестого и девятого элементов // и присваивание им 99 idx[0] = 1; idx[1] = 2; idx[2] = 5; idx[3] = 8; va[idx] = 99; // Вывод всего массива значений cout << "Вывод всего массива значений:\n"; printValarray (va, 4); getch(); return 0; }
Переменная idx используется для определения подмножеств элементов массива значений va. Результат выполнения программы выглядит так:
Рис.1. Результат работы приложения
Со следующего шага мы начнем рассматривать строение класса valarray.