29 Numerics library [numerics]

29.7 Numeric arrays [numarray]

29.7.2 Class template valarray [template.valarray]

29.7.2.5 valarray subset operations [valarray.sub]

Член operator[] перегружен, чтобы предоставить несколько способов выбора последовательностей элементов из тех, которые контролируются *this. Каждая из этих операций возвращает подмножество массива. Версии с квалификацией const возвращают это подмножество как новый valarray объект. Неконстантные версии возвращают объект шаблона класса, который имеет ссылочную семантику на исходный массив, работая в сочетании с различными перегрузками operator= и другими операторами присваивания, чтобы обеспечить выборочную замену (нарезку) контролируемой последовательности. В каждом случае выбранные элементы должны существовать.

valarray operator[](slice slicearr) const;

Returns: A, valarray содержащий те элементы управляемой последовательности, которые обозначены slicearr. [Example:

const valarray<char> v0("abcdefghijklmnop", 16);
// v0[slice(2, 5, 3)] returns valarray<char>("cfilo", 5)

end example]

slice_array<T> operator[](slice slicearr);

Returns: Объект, содержащий ссылки на элементы контролируемой последовательности, выбранные с помощью slicearr. [Example:

valarray<char> v0("abcdefghijklmnop", 16);
valarray<char> v1("ABCDE", 5);
v0[slice(2, 5, 3)] = v1;
// v0 == valarray<char>("abAdeBghCjkDmnEp", 16);

end example]

valarray operator[](const gslice& gslicearr) const;

Returns: A, valarray содержащий те элементы управляемой последовательности, которые обозначены gslicearr. [Example:

const valarray<char> v0("abcdefghijklmnop", 16);
const size_t lv[] = { 2, 3 };
const size_t dv[] = { 7, 2 };
const valarray<size_t> len(lv, 2), str(dv, 2);
// v0[gslice(3, len, str)] returns
// valarray<char>("dfhkmo", 6)

end example]

gslice_array<T> operator[](const gslice& gslicearr);

Returns: Объект, содержащий ссылки на элементы контролируемой последовательности, выбранные с помощью gslicearr. [Example:

valarray<char> v0("abcdefghijklmnop", 16);
valarray<char> v1("ABCDEF", 6);
const size_t lv[] = { 2, 3 };
const size_t dv[] = { 7, 2 };
const valarray<size_t> len(lv, 2), str(dv, 2);
v0[gslice(3, len, str)] = v1;
// v0 == valarray<char>("abcAeBgCijDlEnFp", 16)

end example]

valarray operator[](const valarray<bool>& boolarr) const;

Returns: A, valarray содержащий те элементы управляемой последовательности, которые обозначены boolarr. [Example:

const valarray<char> v0("abcdefghijklmnop", 16);
const bool vb[] = { false, false, true, true, false, true };
// v0[valarray<bool>(vb, 6)] returns
// valarray<char>("cdf", 3)

end example]

mask_array<T> operator[](const valarray<bool>& boolarr);

Returns: Объект, содержащий ссылки на элементы контролируемой последовательности, выбранные с помощью boolarr. [Example:

valarray<char> v0("abcdefghijklmnop", 16);
valarray<char> v1("ABC", 3);
const bool vb[] = { false, false, true, true, false, true };
v0[valarray<bool>(vb, 6)] = v1;
// v0 == valarray<char>("abABeCghijklmnop", 16)

end example]

valarray operator[](const valarray<size_t>& indarr) const;

Returns: A, valarray содержащий те элементы управляемой последовательности, которые обозначены indarr. [Example:

const valarray<char> v0("abcdefghijklmnop", 16);
const size_t vi[] = { 7, 5, 2, 3, 8 };
// v0[valarray<size_­t>(vi, 5)] returns
// valarray<char>("hfcdi", 5)

end example]

indirect_array<T> operator[](const valarray<size_t>& indarr);

Returns: Объект, содержащий ссылки на элементы контролируемой последовательности, выбранные с помощью indarr. [Example:

valarray<char> v0("abcdefghijklmnop", 16);
valarray<char> v1("ABCDE", 5);
const size_t vi[] = { 7, 5, 2, 3, 8 };
v0[valarray<size_t>(vi, 5)] = v1;
// v0 == valarray<char>("abCDeBgAEjklmnop", 16)

end example]