Предыдущий пост -
Следующий пост -

std::valarray

Рубрика: Контейнеры, Дата: 5 June, 2013, Автор:
Tags: ,

Да это я также не знаю, что это за массив, но с названия видно что массив каких то значений. Ладно попытаемся разобраться с ним.

Начнем как всегда с заголовочных файлов

#include <valarray>
using std::valarray;

Рассмотрим конструкторы (constructors)

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[5]={1,2,3,4,5};

	//создание пустого valarray
	valarray<int> val;
	//создание 5 по 0
	valarray<int> val1(5);
	//создание 5 по 10
	valarray<int> val2(10,5);
	//копирование значений из массива
	valarray<int> val3(mass,5);
	//вызов конструктора копирвания
	valarray<int> val4(val2);

	cout <<"val4.sum()= "<<val4.sum()<<endl;//50

	return 0;
}

valarray operators

В valarray перегружено очень много различных операторов. Рассмотрим немногие из них. Этот контейнер создан специально для математических вычислений.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int init[]={1,2,3,4};
	valarray<int> val(4);//0 0 0 0
	valarray<int> val1(init,4);//1 2 3 4
	val=val1;//1 2 3 4
	val=val+10;//10 20 30 40

	valarray<bool> comp=(val==val1);
	if(comp.min()==true)
		cout <<"val.min()==val1.min()"<<endl;
	else
		cout <<"val.min()!=val1.min()"<<endl;//val.min()!=val1.min()

	return 0;
}

array::apply()

apply переводится как применять. Функция принимает параметром собственную функцию. От небольшой примерчик.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

//собственная функция
int increment(int x) {return ++x;}

int main()
{
	int mass[4]={10,20,30,40};
	valarray<int> val(mass,4);
	
	valarray<int> val1=val.apply(increment);
	
	//вывод массива
	for(int i=0;i<val1.size();i++)
		cout <<val1[i]<<' ';
	cout <<endl;
	
	for(int i=0;i<val.size();i++)
		cout <<val[i]<<' ';
	cout <<endl;

	return 0;
}

valarray::cshift()

Функция смещает элементы вперед или назад в зависимости от переданного элемента.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[]={1,2,3,4};
	valarray<int> val(mass,4);//1 2 3 4
	//смещаем элементы на 2 вперед
	val=val.cshift(2);//3 4 1 2
	//смещаем элементы на 1 назад
	val=val.cshift(-1);//2 3 4 1

	//вывод массива
	for(int i=0;i<val.size();i++)
		cout <<val[i]<<' ';
	cout <<endl;
	
	return 0;
}

valarray::max() и valarray::min()

Функции возвращают максимальный и минимальный элементы массива.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[]={1,2,3,4};
	valarray<int> val(mass,4);//1 2 3 4
	
	cout <<"val.max()= "<<val.max()<<endl;//4
	cout <<"val.min()= "<<val.min()<<endl;//1
	
	return 0;
}

valarray::operator=()

Это перегруженный оператор присваивания.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[]={1,2,3,4};
	valarray<int> val(mass,4);//1 2 3 4
	
	val=5;//1 2 3 4  5 5 5 5 

	valarray<int> val1(4);//0 0 0 0
	val1=val;//0 0 0 0  5 5 5 5 
	
	return 0;
}

valarray::operator[]()

Это оператор произвольного доступа к элементам.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[]={1,2,3,4};
	valarray<int> val(mass,4);//1 2 3 4
	
	cout <<"val[0]= "<<val[0]<<endl;//1
	cout <<"val[3]= "<<val[3]<<endl;//4
	
	return 0;
}

valarray::resize()

Функция меняет размер массива.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[]={1,2,3,4};
	valarray<int> val(mass,4);//1 2 3 4
	cout <<"val.size()= "<<val.size()<<endl;//4  1 2 3 4
	//меняем размер
	val.resize(10);
	cout <<"val.size()= "<<val.size()<<endl;//10 нулей
	
	return 0;
}

array::shift()

Функция сдвигает массив в зависимости от аргумента и на место сдвинутых элементов ставятся нули.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[]={1,2,3,4};
	valarray<int> val(mass,4);//1 2 3 4
	val=val.shift(2);//3 4 0 0
	val=val.shift(-1);// 0 3 4 0

	//вывод результатов
	for(int i=0;i<4;i++)
		cout <<val[i]<<' ';
	cout <<endl;

	return 0;
}

valarray::size()

Функция возвращает размер массива.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[]={1,2,3,4};
	valarray<int> val(mass,4);//1 2 3 4
	
	cout <<"val.size()= "<<val.size()<<endl;//4

	return 0;
}

valarray::sum()

Функция возвращает сумму всех элементов массива.

#include <iostream>
using std::cout;
using std::endl;
#include <valarray>
using std::valarray;

int main()
{
	int mass[]={1,2,3,4};
	valarray<int> val(mass,4);//1 2 3 4
	
	cout <<"val.sum()= "<<val.sum()<<endl;//10

	return 0;
}

На этом закончим рассматривать.

[youtube]http://www.youtube.com/watch?v=U4etVZcuFsg[/youtube]

rss