STL::array資料

Array容器的相關(guān)知識(shí),array是一個(gè)順序容器,和其他標(biāo)準(zhǔn)容器相比它的特點(diǎn)是容器的大小固定,順序存儲(chǔ)。

1:array的構(gòu)造函數(shù)

array();

array(const array & right);

2:array的成員變量

Type DefinitionDescription

array::const_iteratorThe type of a? constant iterator for the controlled sequence.

array::const_pointerThe type of a? constant pointer to an element.

array::const_referenceThe type of a? constant reference to an element.

array::const_reverse_iteratorThe type of a? constant reverse iterator for the controlled sequence.

array::difference_typeThe type of a? signed distance between two elements.

array::iteratorThe type of an? iterator for the controlled sequence.

array::pointerThe type of a? pointer to an element.

array::referenceThe type of a? reference to an element.

array::reverse_iteratorThe type of a? reverse iterator for the controlled sequence.

array::size_typeThe type of an? unsigned distance between two elements.

array::value_typeThe type of an? element.

3:array的關(guān)于迭代器的成員函數(shù)

Iterators

beginReturn iterator to beginning(public member function )

endReturn iterator to end(public member function )

rbeginReturn reverseiterator to reverse beginning(public member function )

rendReturnreverse iterator to reverse end(public member function )

cbeginReturnconst_iterator to beginning(public member function )

cendReturnconst_iterator to end(public member function )

crbeginReturnconst_reverse_iterator to reverse beginning(public member

function )

crendReturnconst_reverse_iterator to reverse end(public member

function )

這些東西和list中迭代器都類似,在list篇中已經(jīng)做過大量介紹,這里就不再啰嗦了。

4:array中關(guān)于容量的函數(shù)

Capacity

sizeReturnsize(public member function )

max_sizeReturnmaximum size(public member function )

emptyTestwhether array is empty(public member function )

4.1 size()函數(shù)的用法,從結(jié)果中可以看出array容量的一些端倪來。

size_type size() const;

#include

#include

intmain ()

{

std::array myints;

std::cout <<"size of myints: "<< myints.size() << std::endl;

std::cout <<"sizeof(myints): "<

return0;

}

結(jié)果:

size of myints: 5

sizeof(myints): 20

4.2 max_size()函數(shù)的用法,說明這個(gè)函數(shù)和list中的max_size()的不同

size_type max_size() const;

#include

#include

intmain ()

{

std::array myints;

std::cout <<"size of myints: "<< myints.size() <<'\n';

std::cout <<"max_size of myints: "<< myints.max_size() <<'\n';

return0;

}

結(jié)果:

size of myints: 10

max_size of myints: 10

4.3 empty函數(shù)

bool empty() const;

5.a(chǎn)rray中關(guān)于元素操作的函數(shù)

Element access

operator[]Accesselement(public member function )

atAccesselement(public member function )

frontAccessfirst element(public member function )

backAccesslast element(public member function )

dataGetpointer to data(public member function )

5.1 operator[]操作符

reference operator[](size_type off);

const_reference operator[](size_type off) const;

示例:

#include

#include

intmain ()

{

std::array myarray;

unsignedinti;

for(i=0; i<10; i++) myarray[i]=i;// assign some values:

std::cout <<"myarray contains:";// print content

for(i=0; i<10; i++)

std::cout <<' '<< myarray[i];

std::cout <<'\n';

return0;

}

輸出結(jié)果:

myarray contains: 0 1 2 3 4 5 6 7 8 9

5.2 at()函數(shù)的用法

reference at(size_type off);

const_reference at(size_type off) const;

用法:

#include

#include

intmain ()

{

std::array myarray;

for(inti=0; i<10; i++)

myarray.at(i) = i+1;// assign some values:

std::cout <<"myarray contains:"http:// print content:;

for(inti=0; i<10; i++)

std::cout <<' '<< myarray.at(i);

std::cout <<'\n';

return0;

}

輸出結(jié)果:

myarray contains: 1 2 3 4 5 6 7 8 9 10

5.3 front函數(shù)的用法

reference front();

const_reference front() const;

示例:

#include

#include

intmain ()

{

std::array myarray = {2, 16, 77};

std::cout <<"front is: "<< myarray.front() << std::endl;// 2

std::cout <<"back is: "<< myarray.back() << std::endl;// 77

myarray.front() = 100;

std::cout <<"myarray now contains:";

for(int& x : myarray ) std::cout <<' '<< x;

std::cout <<'\n';

return0;

}

結(jié)果:

front is: 2

back is: 77

myarray now contains: 100 16 77

5.4 back函數(shù)的用法

reference back();

const_reference back() const;

關(guān)于例子,在5.3中的例子已經(jīng)包含了

5.5 data函數(shù)的用法

Ty *data();

const Ty *data() const;

返回值指向第一個(gè)元素的指針,因?yàn)槭琼樞虼鎯?chǔ),所以知道了首元素的指針就可以知道所有元素了。

#include

#include

#include

intmain ()

{

constchar* cstr ="Test string";

std::array charray;

std::memcpy (charray.data(),cstr,12);

std::cout << charray.data() <<'\n';

return0;

}

結(jié)果:

Test string

6修改元素的函數(shù)

Modifiers

fillFill arraywith value(public member function )

swapSwap content(public member function )

6.1 fill函數(shù)的用法

void fill(const Type& _Val);

函數(shù)將array中所有的元素替換成_val

#include

#include

intmain () {

std::array myarray;

myarray.fill(5);

std::cout <<"myarray contains:";

for(int& x : myarray) { std::cout <<' '<< x; }

std::cout <<'\n';

return0;

}

結(jié)果:

myarray contains: 5 5 5 5 5 5

6.2 swap函數(shù)的用法

void swap(array& right);

交換兩個(gè)具有相同長度的array,切記兩個(gè)array的長度必須一致

例子:

#include

#include

intmain ()

{

std::array first = {10, 20, 30, 40, 50};

std::array second = {11, 22, 33, 44, 55};

first.swap (second);

std::cout <<"first:";

for(int& x : first) std::cout <<' '<< x;

std::cout <<'\n';

std::cout <<"second:";

for(int& x : second) std::cout <<' '<< x;

std::cout <<'\n';

return0;

}

結(jié)果:

first contains: 11 22 33 44 55

second contains: 10 20 30 40 50

附加頭文件中其他跟array類無關(guān)的類以及函數(shù)

1:tuple_element類

template

class tuple_element > {

typedef Ty type;

};

這個(gè)類就是獲取array中第幾個(gè)元素的值,示例如下:

#include

#include

typedef std::array Myarray;

int main()

{

Myarray c0 = {0, 1, 2, 3};

// display contents " 0 1 2 3"

for (Myarray::const_iterator it = c0.begin();

it != c0.end(); ++it)

std::cout << " " << *it;

std::cout << std::endl;

// display first element " 0"

std::tuple_element<0, Myarray>::type val = c0.front();

std::cout << " " << val;

std::cout << std::endl;

return (0);

}

結(jié)果:

0 1 2 3

0

2:tuple_size類

template

class tuple_size > {

static const unsigned value = N;

};

這個(gè)類就是獲取array數(shù)組的大小,示例

#include

#include

typedef std::array Myarray;

int main()

{

Myarray c0 = {0, 1, 2, 3};

// display contents " 0 1 2 3"

for (Myarray::const_iterator it = c0.begin();

it != c0.end(); ++it)

std::cout << " " << *it;

std::cout << std::endl;

// display size " 4"

std::cout << " " << std::tuple_size::value;

std::cout << std::endl;

return (0);

}

結(jié)果:

0 1 2 3

4

3:get函數(shù)的用法

template

Ty& get(array& arr);

template

const Ty& get(const array& arr);

這個(gè)函數(shù)就是返回array[id]的索引,示例

#include

#include

typedef std::array Myarray;

int main()

{

Myarray c0 = {0, 1, 2, 3};

// display contents " 0 1 2 3"

for (Myarray::const_iterator it = c0.begin();

it != c0.end(); ++it)

std::cout << " " << *it;

std::cout << std::endl;

// display odd elements " 1 3"

std::cout << " " << std::get<1>(c0);

std::cout << " " << std::get<3>(c0);

std::cout << std::endl;

return (0);

}

結(jié)果:

0 1 2 3

1 3

4.swap函數(shù)的用法

template

void swap(

array& left,

array& right);

交換兩個(gè)數(shù)組的值,示例

#include

#include

typedef std::array Myarray;

int main()

{

Myarray c0 = {0, 1, 2, 3};

// display contents " 0 1 2 3"

for (Myarray::const_iterator it = c0.begin();

it != c0.end(); ++it)

std::cout << " " << *it;

std::cout << std::endl;

Myarray c1 = {4, 5, 6, 7};

c0.swap(c1);

// display swapped contents " 4 5 6 7"

for (Myarray::const_iterator it = c0.begin();

it != c0.end(); ++it)

std::cout << " " << *it;

std::cout << std::endl;

swap(c0, c1);

// display swapped contents " 0 1 2 3"

for (Myarray::const_iterator it = c0.begin();

it != c0.end(); ++it)

std::cout << " " << *it;

std::cout << std::endl;

return (0);

}

結(jié)果:

0 1 2 3

4 5 6 7

0 1 2 3

???;??[?.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容