C++vector転載プラス若干整理
8115 ワード
一、概説
vectorはC++標準テンプレートライブラリの一部であり、多機能であり、多種類のデータ構造とアルゴリズムを操作できるテンプレートクラスと関数ライブラリである.vectorは様々なタイプのオブジェクトを格納できるコンテナであり、簡単に言えば、vectorは任意のタイプのダイナミック配列を格納することができ、ダイナミックにサイズを変更することができる.
例:
// c
int myHouse[100] ;
// vector
vector<int>vecMyHouse(100);
上記のように定義するとvecMyHouseはint型のデータを100個格納できる.
1.通常の配列のようにアクセスできます
//eg:
vecMyHouse[50] = 1024;
2.コンテナにデータを順番に埋め込むことができます
eg:
int i =0 ;
for( ;i< 25; i++ )
{
vecMyHouse.push_back(1);
}
3.動的にサイズを変更することもできます.次の文で実現します.
// 400, 400 int
//eg:
vecMyHouse.resize(400);
4.コンテナにカスタムデータ型を読み込むこともできます
//eg:
// class
class Cmyclass
{
};
// class
vector<Cmyclass>vecMyHouse;
5.コンテナを定義するときに初期値を割り当てることができます.
// 100 int , 0
vector<int>vecMyHouse(100,0);
6.あるコンテナのオブジェクトを別のコンテナに割り当てることができます.
//eg:
// 100 int , 0
vector<int>vecMyHouse(100,0);
// ,
vector<int> myVec ;
myVec = vecMyHouse;
二、以上はvector容器の簡単な紹介で、以下はそのその他の機能を詳しく紹介します.
1.vectorを使用するには、ヘッダーファイルに次のコードを含める必要があります.
#include <vector>
2.vectorはstdネーミングドメインに属するため、ネーミング制限によりファイルの先頭に付けることができる
using std::vector;またはusing namespace std;またはvectorのコードを直接使用する前に接頭辞を付ける
//eg:
std::vector<int>myHouse;
3.vectorは次の関数または操作を提供します.
以下に、よく使われる機能の一部を挙げます
//vector stdを定義する::vector
//使える機能
c.clear()コンテナ内のすべてのデータを除去します.
c.empty()容器が空であるか否かを判断する.
c.erase(pos)pos位置のデータを削除
c.erase(beg,end)[beg,end)区間のデータを削除
c.front()は最初のデータを返します.
c.insert(pos,elem)pos位置にelemコピーを挿入
c.pop_back()最後のデータを削除します.
c.push_back(elem)は、末尾にデータを追加します.
c.resize(num)容器の大きさを再設定する
c.size()コンテナ内の実際のデータの個数を返します.
c.begin()は、コンテナの最初の要素を指す反復器を返す
c.end()は、コンテナの最後の要素を指す反復器を返す
三、反復器とは何か説明します
反復器はポインタに相当します.たとえば、次のようになります.
// ,
// *
int a = 10;
int *p;
p = &a;
//
//eg:
*p = 11; // a 11
// ,
// , *
// vector
std::vector<int> myVec;
// 10
for(int j =0 ; j<10 ; j++)
{
myVec.push_back(j);
}
//
std::vector<int>::iteratorp;
//
p = myVec.begin();
//
p ++;
//
*p = 20 ; //< myVec 20
// ,
p = myVec.begin();
for( ; p!= myVec.end(); p++ )
{
*p = 50;
}
以上vectorの使い方を簡単に説明しましたが、入門用のみです.ありがとうございます.
-------------------------------------------------------------------------------------
1.vectorのデータの格納と出力:
#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
int i = 0;
vector<int> v;
for( i = 0; i < 10; i++ )
{
v.push_back( i );// vector
}
//
for( i = 0; i < v.size(); i++ )//v.size() vector
{
cout << v[ i ] << ""; //
}
cont << endl;
}
// : v.begin() v.end() vector 。 :
vector<int>::iteratoriter;
for( iter = v.begin(); iter!= v.end(); iter++ )
{
cout << *iter << endl;
}
2. vector 。
1) 10 vector , vector 1-10。
#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
int i = 0, j = 0;
// , 10 , vector 。
// 。 vector<int>(0) vector , vector 。
vector< vector<int>> Array( 10, vector<int>(0) );
for( j = 0; j < 10; j++ )
{
for ( i = 0; i < 9; i++ )
{
Array[ j ].push_back( i );
}
}
for( j = 0; j < 10; j++ )
{
for( i = 0; i < Array[ j ].size(); i++ )
{
cout << Array[ j ][ i ] <<" ";
}
cout<< endl;
}
}
2) 。
#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
int i = 0, j = 0;
vector< vector<int>> Array;
vector< int > line;
for( j = 0; j < 10; j++ )
{
Array.push_back( line );// vector , 。
for ( i = 0; i < 9; i++ )
{
Array[ j ].push_back( i );
}
}
for( j = 0; j < 10; j++ )
{
for( i = 0; i < Array[ j ].size(); i++ )
{
cout << Array[ j ][ i ] <<" ";
}
cout<< endl;
}
}
vettor erase
#include "iostream"
#include "vector"
using namespace std;
int main()
{
vector<int> arr;
arr.push_back(6);
arr.push_back(8);
arr.push_back(3);
arr.push_back(8);
for(vector<int>::iterator it=arr.begin(); it!=arr.end(); )
{
if(* it == 8)
{
it = arr.erase(it);
}
else
{
++it;
}
}
cout << "After remove 8:
";
for(vector<int>::iterator it =arr.begin(); it < arr.end(); ++it)
{
cout << * it << "";
}
cout << endl;
}
http://www.cnblogs.com/charley_yang/archive/2010/12/11/1903040.html
http://developer.51cto.com/art/201002/183645.htm