# vector

185人阅读 评论(0)
template < class T, class  Allocator = allocator<T> > class vector;

T: 元素的类型
Allocator: 元素所要分配的空间大小。

[cpp] view plaincopy
<span style="font-size:16px;">1   vector构造函数：也就是如何对一个vec对象进行初始化。
////////////////////////////代码//////////////////////////////////////
explicit vector ( const Allocator& = Allocator() );
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );
template <class InputIterator>
vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() );
vector ( const vector<T,Allocator>& x );
////////////////////////////代码//////////////////////////////////////

First，容器第一个元素，last最后一个元素，一个vector的引用。

// constructing vectors
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
unsigned int i;

// constructors used in the same order as described above:
vector<int> first;            // 初始化一个int类型的空vector变量
vector<int> second (4,100);             // 初始化4个100
vector<int> third (second.begin(),second.end());
// 通过second 进行赋值
vector<int> fourth (third);               // a copy of third

// the iterator constructor can also be used to construct from arrays:
int myints[] = {16,2,77,29};
vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );

cout << "The contents of fifth are:";
for (i=0; i < fifth.size(); i++)
cout << " " << fifth[i];

cout << endl;

return 0;
}

The contents of fifth are: 16 2 77 29
2   vector::~vector析构函数

3   vector::assign
template <class InputIterator>
void assign ( InputIterator first, InputIterator last );

void assign ( size_type n, const T& u );

将[beg; end)区间中的数据赋值给c。将n个elem的拷贝赋值给c。

// vector assign
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> first;
vector<int> second;
vector<int> third;

first.assign (7,100);             // a repetition 7 times of value 100

vector<int>::iterator it;
it=first.begin()+1;

second.assign (it,first.end()-1); // the 5 central values of first

int myints[] = {1776,7,4};
third.assign (myints,myints+3);   // assigning from array.

cout << "Size of first: " << int (first.size()) << endl;
cout << "Size of second: " << int (second.size()) << endl;
cout << "Size of third: " << int (third.size()) << endl;
return 0;
}

Size of first: 7
Size of second: 5
Size of third: 3

4   vector::at
const_reference at ( size_type n ) const;
reference at ( size_type n );

// vec.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
// constructing vectors
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector(10);//初始化10个为0的元素。
unsigned int i;
for (i=0;i<myvector.size();i++)
{
myvector.at(i)=i;
}
cout << "myvector contains:";
for (i=0; i<myvector.size(); i++)
cout << " " << myvector.at(i);

cout << endl;

return 0;
}

5   vector::back

reference back ( );
const_reference back ( ) const;

// vector::back
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;

myvector.push_back(10);

while (myvector.back() != 0)
{
myvector.push_back ( myvector.back() -1 );
}

cout << "myvector contains:";
for (unsigned i=0; i<myvector.size() ; i++)
cout << " " << myvector[i];

cout << endl;

return 0;
}
Output:
myvector contains: 10 9 8 7 6 5 4 3 2 1 0
vector::begin
iterator begin ();
const_iterator begin () const;

// vector::begin
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;
for (int i=1; i<=5; i++) myvector.push_back(i);

vector<int>::iterator it;

cout << "myvector contains:";
for ( it=myvector.begin() ; it < myvector.end(); it++ )
cout << " " << *it;

cout << endl;

return 0;
}
Output:
myvector contains: 1 2 3 4 5
6   vector::capacity

// comparing size, capacity and max_size
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;

// set some content in the vector:
for (int i=0; i<100; i++) myvector.push_back(i);

cout << "size: " << (int) myvector.size() << "\n";
cout << "capacity: " << (int) myvector.capacity() << "\n";
cout << "max_size: " << (int) myvector.max_size() << "\n";
return 0;
}
A possible output for this program could be:
size: 100
capacity: 141
max_size: 1073741823
7   vector::clear

// clearing vectors
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
unsigned int i;
vector<int> myvector;
myvector.push_back (100);
myvector.push_back (200);
myvector.push_back (300);

cout << "myvector contains:";
for (i=0; i<myvector.size(); i++) cout << " " << myvector[i];

myvector.clear();
myvector.push_back (1101);
myvector.push_back (2202);

cout << "\nmyvector contains:";
for (i=0; i<myvector.size(); i++) cout << " " << myvector[i];

cout << endl;

return 0;
}
8   vector::empty
bool empty () const; 判断vector对象时否为空。

// vector::empty
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;
int sum (0);

for (int i=1;i<=10;i++) myvector.push_back(i);

while (!myvector.empty())
{
sum += myvector.back();
myvector.pop_back();
}

cout << "total: " << sum << endl;

return 0;
}
9   vector::end
iterator end ();
const_iterator end () const;

Returns an iterator referring to the past-the-end element in the vector container.
Both iterator and const_iterator are member types. In the vector class template, these are random access iterators

// test_vector.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvec;
for (int i=0;i<6;i++)
{
myvec.insert(myvec.end(),i);
}
cout<<"element";
vector<int>::iterator it;
for (it=myvec.begin();it<myvec.end();it++)
{
cout<<" "<<(*it)<<endl;
}
return 0;
}

10  vector::erase

iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );

// erasing from vector
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
unsigned int i;
vector<unsigned int> myvector;

// set some values (from 1 to 10)
for (i=1; i<=10; i++) myvector.push_back(i);

// erase the 6th element
myvector.erase (myvector.begin()+5);

// erase the first 3 elements:
myvector.erase (myvector.begin(),myvector.begin()+3);

cout << "myvector contains:";
for (i=0; i<myvector.size(); i++)
cout << " " << myvector[i];
cout << endl;

return 0;
}
Output:
myvector contains: 4 5 7 8 9 10

11  vector::front

reference front ( );
const_reference front ( ) const;

Returns a reference to the first element in the vector container.

#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;

myvector.push_back(78);
myvector.push_back(16);

// now front equals 78, and back 16

myvector.front() -= myvector.back();

cout << "myvector.front() is now " << myvector.front() << endl;

return 0;
}

Output:
myvector.front() is now 62
12  vector::get_allocator
allocator_type get_allocator() const;
// test_vector.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvector;
int* p;
unsigned int i;

p=myvector.get_allocator().allocate(5);
for (int i=0;i<5;i++)
{
p[i]=i;
}
cout << "The allocated array contains:";
for (i=0; i<5; i++) cout << " " << p[i];
cout << endl;
myvector.get_allocator().deallocate(p,5);

return 0;
}
The allocated array contains: 0 1 2 3 4

13  vector::insert
iterator insert ( iterator position, const T& x );
void insert ( iterator position, size_type n, const T& x );
template <class InputIterator>
void insert ( iterator position, InputI  last );
// test_vector.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvector(3,100);
vector<int> ::iterator it;
it=myvector.begin();
it=myvector.insert(it,200);
myvector.insert(it,2,300);

it=myvector.begin();

vector<int> anothervector(2,400);
myvector.insert(it+2,anothervector.begin(),anothervector.end());

int array[]={501,502,503};
myvector.insert(myvector.begin(),array,array+3);

cout << "myvector contains:";

for (vector<int>::iterator it=myvector.begin();it<myvector.end();it++)
{
cout<<" "<<*it;
}

return 0;

}

Output:
myvector contains: 501 502 503 300 300 400 400 200 100 100 100
14  vector::max_size
size_type max_size () const;

// comparing size, capacity and max_size
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;

// set some content in the vector:
for (int i=0; i<100; i++) myvector.push_back(i);

cout << "size: " << myvector.size() << "\n";
cout << "capacity: " << myvector.capacity() << "\n";
cout << "max_size: " << myvector.max_size() << "\n";
return 0;
}
A possible output for this program could be:
size: 100
capacity: 141
max_size: 1073741823
15  vector::operator=

vector<T,Allocator>& operator= (const vector<T,Allocator>& x);

// vector assignment
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> first (3,0);
vector<int> second (5,0);

second=first;
first=vector<int>();

cout << "Size of first: " << int (first.size()) << endl;
cout << "Size of second: " << int (second.size()) << endl;
return 0;
}

Size of first: 0
Size of second: 3

16  vector::operator[]
reference operator[] ( size_type n );
const_reference operator[] ( size_type n ) const;

Returns a reference to the element at position n in the vector container.

// test_vector.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvector(10);
unsigned int i;
vector<int> ::size_type size=myvector.size();
for (i=0;i<10;i++)
{
myvector[i]=i;
}
for (i=0;i<size/2;i++)
{
int temp=myvector[size-1-i];
myvector[size-1-i]=myvector[i];
myvector[i]=temp;
}
for (i=0;i<10;i++)
{
cout<<" "<<myvector[i];
}
cout<<endl;
return 0;
}

Output:
myvector contains: 9 8 7 6 5 4 3 2 1 0
17  vector::pop_back
void pop_back ( );

// vector::pop_back
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;
int sum (0);
myvector.push_back (100);
myvector.push_back (200);
myvector.push_back (300);

while (!myvector.empty())
{
sum+=myvector.back();
myvector.pop_back();
}

cout << "The elements of myvector summed " << sum << endl;

return 0;
}

18  vector::push_back
void push_back ( const T& x );

// vector::push_back
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;
int myint;

cout << "Please enter some integers (enter 0 to end):\n";

do {
cin >> myint;
myvector.push_back (myint);
} while (myint);

cout << "myvector stores " << (int) myvector.size() << " numbers.\n";

return 0;
}
19  vector::rbegin

reverse_iterator rbegin();
const_reverse_iterator rbegin() const;

// test_vector.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> myvector(10);
unsigned int i;
vector<int> ::size_type size=myvector.size();
for (i=0;i<10;i++)
{
myvector[i]=i;
}
vector<int>::reverse_iterator it;
for (it=myvector.rbegin();it<myvector.rend();it ++)
{
cout<<" "<<*it;
}
cout<<endl;
return 0;
}

20  vector::rend
public member function
reverse_iterator rend();
const_reverse_iterator rend() const;

21  vector::reserve
void reserve ( size_type n );
Request a change in capacity
Requests that the capacity of the allocated storage space for the elements of the vector container be at least enough to hold n elements.

// vector::reserve
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int main ()
{
vector<int> content;
size_t filesize;

ifstream file ("test.bin",ios::in|ios::ate|ios::binary);
if (file.is_open())
{
filesize=file.tellg();

content.reserve(filesize);

file.seekg(0);
while (!file.eof())
{
content.push_back( file.get() );
}

// print out content:
vector<int>::iterator it;
for (it=content.begin() ; it<content.end() ; it++)
cout << hex << *it;
}

return 0;
}

22  vector::resize

void resize ( size_type sz, T c = T() );

// resizing vector
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;

unsigned int i;

// set some initial content:
for (i=1;i<10;i++) myvector.push_back(i);

myvector.resize(5);
myvector.resize(8,100);
myvector.resize(12);

cout << "myvector contains:";
for (i=0;i<myvector.size();i++)
cout << " " << myvector[i];

cout << endl;

return 0;
}
myvector contains: 1 2 3 4 5 100 100 100 0 0 0 0

23  vector::size
size_type size() const;

// vector::size
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myints;
cout << "0. size: " << (int) myints.size() << endl;

for (int i=0; i<10; i++) myints.push_back(i);
cout << "1. size: " << (int) myints.size() << endl;

myints.insert (myints.end(),10,100);
cout << "2. size: " << (int) myints.size() << endl;

myints.pop_back();
cout << "3. size: " << (int) myints.size() << endl;

return 0;
}

Output:
0. size: 0
1. size: 10
2. size: 20
3. size: 19
24  vector::swap

// swap vectors
#include <iostream>
#include <vector>
using namespace std;

main ()
{
unsigned int i;
vector<int> first (3,100);   // three ints with a value of 100
vector<int> second (5,200);  // five ints with a value of 200

first.swap(second);

cout << "first contains:";
for (i=0; i<first.size(); i++) cout << " " << first[i];

cout << "\nsecond contains:";
for (i=0; i<second.size(); i++) cout << " " << second[i];

cout << endl;

return 0;
Output:
first contains: 200 200 200 200 200
second contains: 100 100 100

</span>  

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：9897次
• 积分：124
• 等级：
• 排名：千里之外
• 原创：1篇
• 转载：24篇
• 译文：0篇
• 评论：0条
文章分类
文章存档
评论排行