c++vector(ベクトル)使用方法の詳細(vectorへの順次アクセスの多様な方法)
15262 ワード
vectorはベクトルタイプで、いくつかの整数のような多くのタイプのデータを収容できるので、コンテナと呼ばれています.本稿では、使用方法について説明します.vectorはベクトルタイプで、いくつかの整数のような多くのタイプのデータを収容できるので、コンテナと呼ばれます.vectorはC++STLの重要なメンバーであり、ヘッダファイルを含める必要があります.
コードは次のとおりです.
一、vectorの初期化:以下のように5つの方法があります.
二、vectorオブジェクトのいくつかの重要な操作を例に挙げて説明します.
三、vectorに順次アクセスするいくつかの方法を例に挙げて説明する.
1.ベクトルaに要素を追加する
コードは次のとおりです.
2、配列から要素を選択してベクトルに追加することもできます
コードは次のとおりです.
3、既存のベクトルから要素を選択してベクトルに追加することもできます
コードは次のとおりです.
4、ファイルから要素を読み込んでベクトルに追加することもできます
コードは次のとおりです.
5、【誤区】
コードは次のとおりです.
//このやり方も似たようなやり方も間違っています.最初は私もこのような間違いを犯したことがありますが、後に発見しました.下付き文字はすでに存在する要素を取得するためにしか使用できませんが、現在のa[i]は空のオブジェクトです.
2ベクトルから要素1を読み込む)下付きで読み取る
コードは次のとおりです.
2)遍歴器による読み取り
コードは次のとおりです.
四、いくつかの重要なアルゴリズムで、使用時にヘッダファイルを含める必要があります.
コードは次のとおりです.
#include;
一、vectorの初期化:以下のように5つの方法があります.
(1) vector<int> a(10);
// 10 ( , ), , 。
(2)vector<int> a(10,1);
// 10 , 1
(3)vector<int> a(b);
// b a ,
(4)vector<int> a(b.begin(),b.begin+3);
// a b 0 2 ( 3 )
(5)int b[7]={1,2,3,4,5,9,8};
vector<int> a(b,b+7);
//
二、vectorオブジェクトのいくつかの重要な操作を例に挙げて説明します.
(1)a.assign(b.begin(), b.begin()+3);
//b , b 0~2 a
(2)a.assign(4,2);
// a 4 , 2
(3)a.back();
// a
(4)a.front();
// a
(5)a[i];
// a i , a[i] 2013-12-07
(6)a.clear();
// a
(7)a.empty();
// a , ture, false
(8)a.pop_back();
// a
(9)a.erase(a.begin()+1,a.begin()+3);
// a 1 ( 0 ) 2 , a.begin()+1 ( ) a.begin()+ 3( )
(10)a.push_back(5);
// a , 5
(11)a.insert(a.begin()+1,5);
// a 1 ( 0 ) 5, a 1,2,3,4, 1,5,2,3,4
(12)a.insert(a.begin()+1,3,5);
// a 1 ( 0 ) 3 , 5
(13)a.insert(a.begin()+1,b+3,b+6);
//b , a 1 ( 0 ) b 3 5 ( b+6), b 1,2,3,4,5,9,8 , 1,4,5,9,2,3,4,5,9,8
(14)a.size();
// a ;
(15)a.capacity();
// a
(16)a.rezize(10);
// a 10 , , ,
(17)a.rezize(10,2);
// a 10 , , , 2
(18)a.reserve(100);
// a (capacity) 100, a.capacity(); 100. a , ( a , )
(19)a.swap(b);
//b , a b
(20)a==b;
//b , !=,>=,<=,>,<
三、vectorに順次アクセスするいくつかの方法を例に挙げて説明する.
1.ベクトルaに要素を追加する
コードは次のとおりです.
vector<int> a;
for(int i = 0;i < 10;i++)
{
a.push_back(i);
}
2、配列から要素を選択してベクトルに追加することもできます
コードは次のとおりです.
int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i = 1;i <= 4;i++)
{
b.push_back(a[i]);
}
3、既存のベクトルから要素を選択してベクトルに追加することもできます
コードは次のとおりです.
int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it = c.begin();it < c.end();it++)
{
b.push_back(*it);
}
4、ファイルから要素を読み込んでベクトルに追加することもできます
コードは次のとおりです.
ifstream in("data.txt");
vector<int> a;
for(int i; in >> i)
{
a.push_back(i);
}
5、【誤区】
コードは次のとおりです.
vector<int> a;
for(int i = 0;i < 10;i++)
{
a[i]=i;
}
//このやり方も似たようなやり方も間違っています.最初は私もこのような間違いを犯したことがありますが、後に発見しました.下付き文字はすでに存在する要素を取得するためにしか使用できませんが、現在のa[i]は空のオブジェクトです.
2ベクトルから要素1を読み込む)下付きで読み取る
コードは次のとおりです.
int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(int i = 0;i <= b.size() - 1;i++)
{
cout<" ";
}
2)遍歴器による読み取り
コードは次のとおりです.
int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(vector<int>::iterator it = b.begin();it != b.end();it++)
{
cout<" ";
}
四、いくつかの重要なアルゴリズムで、使用時にヘッダファイルを含める必要があります.
#include
1)sort(a.begin(),a.end());
// a a.begin()( ) a.end()( )
(2)reverse(a.begin(),a.end());
// a a.begin()( ) a.end()( ) , , a 1,3,2,4, 4,2,3,1
(3)copy(a.begin(),a.end(),b.begin()+1);
// a a.begin()( ) a.end()( ) b , b.begin()+1 ( ) ,
(4)find(a.begin(),a.end(),10);
// a a.begin()( ) a.end()( ) 10,