C++11學(xué)習(xí) - Array的用法與vector用法
Array
-對(duì)于Array來(lái)說(shuō)它是固定大小的序列容器,它們包含嚴(yán)格的線性序列排序的特定數(shù)量的元素,在其內(nèi)部來(lái)說(shuō),數(shù)組除數(shù)組除保留其包含的元素外不保留其他任何數(shù)據(jù)(甚至不包括其大?。ㄟ@是模板參數(shù),固定在編譯時(shí)))。就存儲(chǔ)大小而言,它與使用該語(yǔ)言的括號(hào)語(yǔ)法([])聲明的普通數(shù)組一樣有效。此類僅向其添加一層成員和全局函數(shù),因此可以將數(shù)組用作標(biāo)準(zhǔn)容器。要知道的是,零大小的數(shù)組是有效的,但不應(yīng)該取消引用
1.Array的模板形式為 template < class T, size_t N > class array;
2.Array的功能函數(shù)
array::begin-返回的是迭代器的開始
array::end-返回的是迭代器的末尾
array::rbegin-返回反向迭代器以反向開始
array::rend-返回反向迭代器以方向末尾
array::cbegin-指針指向的const類型,不能進(jìn)行修改
array::cend-同理
array::data()-有兩種形式一種是const,一種是非const,返回的是數(shù)組的內(nèi)容
- // array::data
- #include <iostream>
- #include <cstring>
- #include <array>
- int main ()
- {
- const char* cstr = "www.linuxmi.com";
- std::array<char,15> charray;
- std::memcpy (charray.data(),cstr,15);
- std::cout << charray.data() << '\n';
- return 0;
- }
在這里通過(guò):memcpy函數(shù)將其定義的cstr復(fù)制到定義的數(shù)組內(nèi)
運(yùn)行結(jié)果:www.linuxmi.com
array::max_size-返回的是數(shù)組的最大長(zhǎng)度
- // array::max_size
- #include <iostream>
- #include <array>
- int main ()
- {
- std::array<int,10> myints;
- std::cout << "size of myints: " << myints.size() << '\n';
- std::cout << "max_size of myints: " << myints.max_size() << '\n';
- return 0;
- }
運(yùn)行結(jié)果為:
size of myints: 10
max_size of myints: 10
vector的用法
-向量是表示可以改變大小的數(shù)組的序列容器。
與array相比來(lái)說(shuō),上面所說(shuō)的一些基本類型都有,vector新增了push_back,insert等一些類型
push_back-往vector最后面加數(shù)據(jù)
- // vector::push_back
- #include <iostream>
- #include <vector>
- int main ()
- {
- std::vector<int> myvector;
- int myint;
- std::cout << "Please enter some integers (enter 0 to end):\n";
- do {
- std::cin >> myint;
- myvector.push_back (myint);
- } while (myint);
- std::cout << "myvector stores " << int(myvector.size()) << " numbers.\n";
- return 0;
- }
insert的用法
- single element (1)
- iterator insert (const_iterator position, const value_type& val);
- fill (2)
- iterator insert (const_iterator position, size_type n, const value_type& val);
- range (3)
- template <class InputIterator>
- iterator insert (const_iterator position, InputIterator first, InputIterator last);
- move (4)
- iterator insert (const_iterator position, value_type&& val);
- initializer list (5)
- iterator insert (const_iterator position, initializer_list<value_type> il);
代碼實(shí)現(xiàn)
- // inserting into a vector
- #include <iostream>
- #include <vector>
- int main ()
- {
- std::vector<int> myvector (3,100);
- std::vector<int>::iterator it;
- it = myvector.begin();
- it = myvector.insert ( it , 200 );
- myvector.insert (it,2,300);
- // "it" no longer valid, get a new one:
- it = myvector.begin();
- std::vector<int> anothervector (2,400);
- myvector.insert (it+2,anothervector.begin(),anothervector.end());
- int myarray [] = { 501,502,503 };
- myvector.insert (myvector.begin(), myarray, myarray+3);
- std::cout << "myvector contains:";
- for (it=myvector.begin(); it<myvector.end(); it++)
- std::cout << ' ' << *it;
- std::cout << '\n';
- return 0;
- }
運(yùn)行結(jié)果myvector contains: 501 502 503 300 300 400 400 200 100 100 100
OK,就這樣。