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