Шаг 441.
Библиотека STL.
Числовые типы. Пример использования перечисляемого подмножества

    На этом шаге мы рассмотрим пример создания и использования перечисляемого подмножества.

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

// 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.




Предыдущий шаг Содержание Следующий шаг