C++STL vector共通関数インスタンス解析
3327 ワード
push_back()
はその名の通り、push_back(x)
はvector
の後に要素xを追加し、時間複雑度は0(1)である.例:#include
#include
using namespace std;
int main()
{
vector vi;
for(int i=1; i<=3; i++)
{
vi.push_back(i); // 1,2,3 vi
}
for(int i=0; i < vi.size(); i++) // size() vi
{
printf("%d",vi[i]);
}
return 0;
}
出力結果
123
pop_back()
は追加があれば削除があり、pop_back()
はvectorのテール要素を削除するために使用され、時間複雑度はO(1)である.例:#include
#include
using namespace std;
int main()
{
vector vi;
for(int i=1; i<=3; i++)
{
vi.push_back(i); // 1,2,3 vi
}
vi.pop_back()
for(int i=0; i < vi.size(); i++)
{
printf("%d",vi[i]);
}
return 0;
}
出力結果
1 2
size()
size()
vector内の要素の個数を取得するために使用され、時間的複雑度はO(1)である.size()
はunsigned
lタイプを返しますが、一般的には%dで大きな問題は発生しません.これはすべてのSTL容器について同じです.例:#include
#include
using namespace std;
int main()
{
vector vi;
for(int i=1; i<=3; i++)
{
vi.push_back(i); // 1,2,3 vi
}
printf("%d
", vi.size() );
return 0;
}
出力結果:
3
clear()
d clear()
は、vector内のすべての要素をクリアするために使用され、時間的複雑度はO(N)であり、Nはvector内の要素の個数である.例:#include
#include
using namespace std;
int main()
{
vector vi;
for(int i=1; i<=3; i++)
{
vi.push_back(i); // 1,2,3 vi
}
vi.clear();
printf("%d
",vi.size());
return 0;
}
出力結果:
0
insert()
insert(it,x)
vectorの任意の反復器itに元素Xを挿入するために使用され、時間的複雑度はO(N)である.例:#include
#include
using namespace std;
int main()
{
vector vi;
for(int i=1; i<=5; i++)
{
vi.push_back(i); // 1 2 3 4 5
}
vi.insert(vi.begin() + 2, -1);
for(int i=0; i< vi.size(); i++)
{
printf("%d", vi[i]); //1 2-1 3 4 5
}
return 0;
}
出力結果:
1 2 -1 3 4 5
erase()
には、単一の要素を削除し、1つの区間のすべての要素を削除する2つの方法があります.時間的複雑度はいずれもO(N)である.①個々の要素を削除します.s erase(it)
は、反復器がitにある要素を削除する.例:#include
#include
using namespace std;
int main()
{
vector vi;
for(int i=5; i<=9; i++)
{
vi.push_back(i); // 5 6 7 8 9
}
vi.erase(vi.begin() + 3);
for(int i=0; i< vi.size(); i++)
{
printf ("%d", vi[i]);
}
return 0;
}
出力結果:
5679
②1つの区間内のすべての要素を削除します.erase(frist, last)
は[frist,last)内のすべての要素を削除する.begin()関数はviのヘッダ要素アドレスを取得する役割を果たす.end()関数はテール要素アドレスの次のアドレスを取得する.(左閉右開)例は次のとおりです.
#include
#include
using namespace std;
int main()
{
vector vi;
for(int i=5; i<=9; i++)
{
vi.push_back(i); // 5 6 7 8 9
}
vi.erase(vi.begin() + 1, vi.begin() + 4); // vi[1] vi[2] vi[3]
for(int i=0; i< vi.size(); i++)
{
printf ("%d", vi[i]);
}
return 0;
}
出力結果:
5 9