现在的位置: 首页 > 综合 > 正文

c++ vector 比较详细的用法

2013年12月02日 ⁄ 综合 ⁄ 共 29555字 ⁄ 字号 评论关闭

#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    vector<int> ivec;   
    for (vector<int>::size_type ix = 0;ix != 10; ++ix)
          ivec.push_back(ix);
    cout << "ivec.size: " << ivec.size() << endl;  
  
    vector<int> ivec2(ivec);
    if (ivec2.empty() == false) {
        for (vector<int>::size_type ix = 0; ix != ivec2.size(); ++ix)
			 cout << ivec2[ix] << endl;
     }
     return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ls
com.txt  main  main.cc  Sales_item.h
pateo@pateo-B86N53X:~/work/study$ ./main 
ivec.size: 10
0
1
2
3
4
5
6
7
8
9

#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    vector<int> ivec;   
    for (vector<int>::size_type ix = 0;ix != 10; ++ix)
          ivec.push_back(ix);
    cout << "ivec.size: " << ivec.size() << endl;  
  
    vector<int> ivec2(ivec.begin(),ivec.end());
    if (ivec2.empty() == false) {
        for (vector<int>::size_type ix = 0; ix != ivec2.size(); ++ix)
			 cout << ivec2[ix] << endl;
     }
     return 0;
}

输出同上

#include <iostream>
using std::cout; using std::endl;
#include <string>
using std::string;
#include <list>
using std::list;
#include <cstddef>
using std::size_t;
#include <vector>  
using std::vector;  


int main()
{
    char *words[] = {"stately", "plump", "buck", "mulligan"};


    size_t words_size = sizeof(words)/sizeof(char *);


    vector<string> words2(words, words + words_size);
    
    for (vector<int>::size_type ix = 0;ix != words2.size(); ++ix)  
            cout << words2[ix] << endl;  
    return 0;
}

输出

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
main.cc: In function ‘int main()’:
main.cc:14: warning: deprecated conversion from string constant to ‘char*’
main.cc:14: warning: deprecated conversion from string constant to ‘char*’
main.cc:14: warning: deprecated conversion from string constant to ‘char*’
main.cc:14: warning: deprecated conversion from string constant to ‘char*’
pateo@pateo-B86N53X:~/work/study$ ./main 
stately
plump
buck
mulligan

#include <iostream>
using std::cout; using std::endl;
#include <string>
using std::string;
#include <list>
using std::list;
#include <cstddef>
using std::size_t;
#include <vector>  
using std::vector;  

int main()
{
    const vector<int>::size_type ivec_size = 5;
    vector<string> words2(ivec_size, "liaojianguo");
    for (vector<int>::size_type ix = 0;ix != words2.size(); ++ix)  
            cout << words2[ix] << endl;  
    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
liaojianguo
liaojianguo
liaojianguo
liaojianguo
liaojianguo

#include <iostream>
using std::cout; using std::endl;
#include <string>
using std::string;
#include <list>
using std::list;
#include <cstddef>
using std::size_t;
#include <vector>  
using std::vector;  

int main()
{
    vector<string> words2(3);

    for (vector<int>::size_type ix = 0;ix != words2.size(); ++ix)  
            cout << "----------------" << endl;  
    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
----------------
----------------
----------------
pateo@pateo-B86N53X:~/work/study$ 

说明:

vector< vector<string> > 必须用空格隔开两个相邻的>符号,已示这是两个分开的符号,不然,系统会认为为>>是个单符号,为右移操作符,并结果导致编译时错误

#include <vector>
#include <string>
#include <iostream>

using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;

int main()
{
    vector<int> ivec(10);
    int x = 0;
    for (vector<int>::iterator iter = ivec.begin();iter != ivec.end(); ++iter)
    {
	    *iter = x++; 
    }
    for (vector<int>::iterator iter = ivec.begin();iter != ivec.end(); ++iter)
            cout << *iter << " ";
    cout << endl;

    for (vector<int>::reverse_iterator iter = ivec.rbegin();iter != ivec.rend(); ++iter)
            cout << *iter << " ";
    cout << endl;
    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 4 5 6 7 8 9 
9 8 7 6 5 4 3 2 1 0 
#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
     for(size_t ix = 5;ix != 8;++ix)
    {
      ilist.push_front(ix);
    }
    
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
7 6 5 0 1 2 3 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
    int spouse = 5;
    ilist.insert(ilist.begin(),spouse);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
5 0 1 2 3 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
    ilist.insert(ilist.end(),2,0);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 0 0 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    int iarray[4] = {2,4,6,8};
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
    ilist.insert(ilist.end(),iarray,iarray+4);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 2 4 6 8 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    int iarray[4] = {9,8,7,6};
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
    list<int>::iterator ilist_iter = ilist.begin();
    ilist.insert(ilist_iter,iarray+2,iarray+4);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
7 6 0 1 2 3 
pateo@pateo-B86N53X:~/work/study$ 

ivec1: 1 3 5 7 9 12
ivec2: 0 2 4 6 8 10 12
ivec3: 1 3 9
ivec4: 1 3 5 7 
ivec5:1 3 5 7 9 12

ivec1<ivec2  false
ivec2<ivec1 true
ivec1<ivec3 true
ivec1<ivec4 false
ivec1==ivec5 true
ivec1==ivec4 false
ivec1 != ivec4 true

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  
    ilist.resize(3); 

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 2 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  
    ilist.resize(8,0); 

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 2 3 0 0 0 0 
pateo@pateo-B86N53X:~/work/study$ 

#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    vector<int> ivec;   
    for (vector<int>::size_type ix = 0;
                                ix != 10; ++ix)
          ivec.push_back(ix);

    cout << "ivec.size: " << ivec.size() << endl;  

   

    if (ivec.empty() == false) {
        for (vector<int>::size_type ix = 0; 
                          ix != ivec.size(); ++ix)
            cout << ivec.at(ix) << endl;
     }
     return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
ivec.size: 10
0
1
2
3
4
5
6
7
8
9
pateo@pateo-B86N53X:~/work/study$ 

#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    vector<int> ivec;   
    for (vector<int>::size_type ix = 0;ix != 10; ++ix)
          ivec.push_back(ix);
    cout << "ivec.size: " << ivec.size() << endl;  
    if (ivec.empty() == false) {
        for (vector<int>::size_type ix = 0;ix != ivec.size(); ++ix)
            cout << ivec.at(ix) << endl;
     }
    cout << "--------------------------" << endl;  
    process(ivec.front());
    ivec.pop_front();
    if (ivec.empty() == false) {
        for (vector<int>::size_type ix = 0;ix != ivec.size(); ++ix)
            cout << ivec.at(ix) << endl;
    }
    return 0;
}

at和[index]只适用于vector和deque,pop_front在vector中不支持

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
main.cc: In function ‘int main()’:
main.cc:17: error: ‘process’ was not declared in this scope
main.cc:18: error: ‘class std::vector<int, std::allocator<int> >’ has no member named ‘pop_front’

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist.pop_front();

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
1 2 3 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist.pop_back();

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 2 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist.clear();

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------

pateo@pateo-B86N53X:~/work/study$ 

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    int x = 2;
    list<int>::iterator fiter = find(ilist.begin(),ilist.end(),x);
    if(fiter != ilist.end())
            ilist.erase(fiter);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 3 
pateo@pateo-B86N53X:~/work/study$ 

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    int x = 2; int y = 4;
    
    list<int>::iterator fiter1 = find(ilist.begin(),ilist.end(),x);
    list<int>::iterator fiter2 = find(ilist.begin(),ilist.end(),y);
    ilist.erase(fiter1,fiter2);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 
pateo@pateo-B86N53X:~/work/study$ 

赋值:
c1 = c2;
c1.erase(c1.begin(),c1.end());
c1.insert(c1.begin(),c2.begin(),c2.end());

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist1;
    list<int>  ilist2;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist1.push_back(ix);
    }
    for(size_t ix = 5;ix != 10;++ix)
    {
      ilist2.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    for (list<int>::iterator iter = ilist2.begin();  
                               iter != ilist2.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist1.swap(ilist2);
    
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    for (list<int>::iterator iter = ilist2.begin();  
                               iter != ilist2.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
5 6 7 8 9 
--------------------------
5 6 7 8 9 
0 1 2 3 
pateo@pateo-B86N53X:~/work/study$ 

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist1;
    list<int>  ilist2;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist1.push_back(ix);
    }
    for(size_t ix = 5;ix != 10;++ix)
    {
      ilist2.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    for (list<int>::iterator iter = ilist2.begin();  
                               iter != ilist2.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist1.assign(ilist2.begin(),ilist2.end());
    
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    for (list<int>::iterator iter = ilist2.begin();  
                               iter != ilist2.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ 
pateo@pateo-B86N53X:~/work/study$ 
pateo@pateo-B86N53X:~/work/study$ 
pateo@pateo-B86N53X:~/work/study$ 
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
5 6 7 8 9 
--------------------------
5 6 7 8 9 
5 6 7 8 9 
pateo@pateo-B86N53X:~/work/study$ 

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist1;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist1.push_back(ix);
    }

       
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  



    cout << "--------------------------" << endl;  

    ilist1.assign(10,5);
    
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

   

    return 0;
}

输出:

pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
5 5 5 5 5 5 5 5 5 5 
pateo@pateo-B86N53X:~/work/study$ 

vector和deque容器提供了对元素的快速随机访问,但是,在容器的任意位置插入或删除元素,比在容器尾部插入和删除的开销更大,list类型在任何位置都能快速插入和删除,但是随机访问开销更大

示例是最好的理解方法

#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    vector<int> ivec;   
    for (vector<int>::size_type ix = 0;ix != 10; ++ix)
          ivec.push_back(ix);
    cout << "ivec.size: " << ivec.size() << endl;  
  
    vector<int> ivec2(ivec);
    if (ivec2.empty() == false) {
        for (vector<int>::size_type ix = 0; ix != ivec2.size(); ++ix)
			 cout << ivec2[ix] << endl;
     }
     return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ls
com.txt  main  main.cc  Sales_item.h
pateo@pateo-B86N53X:~/work/study$ ./main 
ivec.size: 10
0
1
2
3
4
5
6
7
8
9

#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    vector<int> ivec;   
    for (vector<int>::size_type ix = 0;ix != 10; ++ix)
          ivec.push_back(ix);
    cout << "ivec.size: " << ivec.size() << endl;  
  
    vector<int> ivec2(ivec.begin(),ivec.end());
    if (ivec2.empty() == false) {
        for (vector<int>::size_type ix = 0; ix != ivec2.size(); ++ix)
			 cout << ivec2[ix] << endl;
     }
     return 0;
}

输出同上

#include <iostream>
using std::cout; using std::endl;
#include <string>
using std::string;
#include <list>
using std::list;
#include <cstddef>
using std::size_t;
#include <vector>  
using std::vector;  


int main()
{
    char *words[] = {"stately", "plump", "buck", "mulligan"};


    size_t words_size = sizeof(words)/sizeof(char *);


    vector<string> words2(words, words + words_size);
    
    for (vector<int>::size_type ix = 0;ix != words2.size(); ++ix)  
            cout << words2[ix] << endl;  
    return 0;
}


输出
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
main.cc: In function ‘int main()’:
main.cc:14: warning: deprecated conversion from string constant to ‘char*’
main.cc:14: warning: deprecated conversion from string constant to ‘char*’
main.cc:14: warning: deprecated conversion from string constant to ‘char*’
main.cc:14: warning: deprecated conversion from string constant to ‘char*’
pateo@pateo-B86N53X:~/work/study$ ./main 
stately
plump
buck
mulligan

#include <iostream>
using std::cout; using std::endl;
#include <string>
using std::string;
#include <list>
using std::list;
#include <cstddef>
using std::size_t;
#include <vector>  
using std::vector;  

int main()
{
    const vector<int>::size_type ivec_size = 5;
    vector<string> words2(ivec_size, "liaojianguo");
    for (vector<int>::size_type ix = 0;ix != words2.size(); ++ix)  
            cout << words2[ix] << endl;  
    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
liaojianguo
liaojianguo
liaojianguo
liaojianguo
liaojianguo

#include <iostream>
using std::cout; using std::endl;
#include <string>
using std::string;
#include <list>
using std::list;
#include <cstddef>
using std::size_t;
#include <vector>  
using std::vector;  

int main()
{
    vector<string> words2(3);

    for (vector<int>::size_type ix = 0;ix != words2.size(); ++ix)  
            cout << "----------------" << endl;  
    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
----------------
----------------
----------------
pateo@pateo-B86N53X:~/work/study$ 


说明:
vector< vector<string> > 必须用空格隔开两个相邻的>符号,已示这是两个分开的符号,不然,系统会认为为>>是个单符号,为右移操作符,并结果导致编译时错误

#include <vector>
#include <string>
#include <iostream>

using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;

int main()
{
    vector<int> ivec(10);
    int x = 0;
    for (vector<int>::iterator iter = ivec.begin();iter != ivec.end(); ++iter)
    {
	    *iter = x++; 
    }
    for (vector<int>::iterator iter = ivec.begin();iter != ivec.end(); ++iter)
            cout << *iter << " ";
    cout << endl;

    for (vector<int>::reverse_iterator iter = ivec.rbegin();iter != ivec.rend(); ++iter)
            cout << *iter << " ";
    cout << endl;
    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 4 5 6 7 8 9 
9 8 7 6 5 4 3 2 1 0 


#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
     for(size_t ix = 5;ix != 8;++ix)
    {
      ilist.push_front(ix);
    }
    
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
7 6 5 0 1 2 3 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
    int spouse = 5;
    ilist.insert(ilist.begin(),spouse);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
5 0 1 2 3 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
    ilist.insert(ilist.end(),2,0);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 0 0 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    int iarray[4] = {2,4,6,8};
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
    ilist.insert(ilist.end(),iarray,iarray+4);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 2 4 6 8 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    int iarray[4] = {9,8,7,6};
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
    list<int>::iterator ilist_iter = ilist.begin();
    ilist.insert(ilist_iter,iarray+2,iarray+4);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  
    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
7 6 0 1 2 3 
pateo@pateo-B86N53X:~/work/study$ 


ivec1: 1 3 5 7 9 12
ivec2: 0 2 4 6 8 10 12
ivec3: 1 3 9
ivec4: 1 3 5 7 
ivec5:1 3 5 7 9 12

ivec1<ivec2  false
ivec2<ivec1 true
ivec1<ivec3 true
ivec1<ivec4 false
ivec1==ivec5 true
ivec1==ivec4 false
ivec1 != ivec4 true

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  
    ilist.resize(3); 

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 2 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  
    ilist.resize(8,0); 

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 2 3 0 0 0 0 
pateo@pateo-B86N53X:~/work/study$ 

#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    vector<int> ivec;   
    for (vector<int>::size_type ix = 0;
                                ix != 10; ++ix)
          ivec.push_back(ix);

    cout << "ivec.size: " << ivec.size() << endl;  

   

    if (ivec.empty() == false) {
        for (vector<int>::size_type ix = 0; 
                          ix != ivec.size(); ++ix)
            cout << ivec.at(ix) << endl;
     }
     return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
ivec.size: 10
0
1
2
3
4
5
6
7
8
9
pateo@pateo-B86N53X:~/work/study$ 

#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    vector<int> ivec;   
    for (vector<int>::size_type ix = 0;ix != 10; ++ix)
          ivec.push_back(ix);
    cout << "ivec.size: " << ivec.size() << endl;  
    if (ivec.empty() == false) {
        for (vector<int>::size_type ix = 0;ix != ivec.size(); ++ix)
            cout << ivec.at(ix) << endl;
     }
    cout << "--------------------------" << endl;  
    process(ivec.front());
    ivec.pop_front();
    if (ivec.empty() == false) {
        for (vector<int>::size_type ix = 0;ix != ivec.size(); ++ix)
            cout << ivec.at(ix) << endl;
    }
    return 0;
}

at和[index]只适用于vector和deque,pop_front在vector中不支持
输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
main.cc: In function ‘int main()’:
main.cc:17: error: ‘process’ was not declared in this scope
main.cc:18: error: ‘class std::vector<int, std::allocator<int> >’ has no member named ‘pop_front’

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist.pop_front();

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
1 2 3 


#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist.pop_back();

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 2 

#include <vector>
#include <string>
#include <iostream>
#include <list>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist.clear();

    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}


输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------

pateo@pateo-B86N53X:~/work/study$ 


#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    int x = 2;
    list<int>::iterator fiter = find(ilist.begin(),ilist.end(),x);
    if(fiter != ilist.end())
            ilist.erase(fiter);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 3 
pateo@pateo-B86N53X:~/work/study$ 

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    int x = 2; int y = 4;
    
    list<int>::iterator fiter1 = find(ilist.begin(),ilist.end(),x);
    list<int>::iterator fiter2 = find(ilist.begin(),ilist.end(),y);
    ilist.erase(fiter1,fiter2);
    for (list<int>::iterator iter = ilist.begin();  
                               iter != ilist.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
0 1 
pateo@pateo-B86N53X:~/work/study$ 

赋值:
c1 = c2;
c1.erase(c1.begin(),c1.end());
c1.insert(c1.begin(),c2.begin(),c2.end());

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist1;
    list<int>  ilist2;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist1.push_back(ix);
    }
    for(size_t ix = 5;ix != 10;++ix)
    {
      ilist2.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    for (list<int>::iterator iter = ilist2.begin();  
                               iter != ilist2.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist1.swap(ilist2);
    
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    for (list<int>::iterator iter = ilist2.begin();  
                               iter != ilist2.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
5 6 7 8 9 
--------------------------
5 6 7 8 9 
0 1 2 3 
pateo@pateo-B86N53X:~/work/study$ 

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist1;
    list<int>  ilist2;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist1.push_back(ix);
    }
    for(size_t ix = 5;ix != 10;++ix)
    {
      ilist2.push_back(ix);
    }
       
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    for (list<int>::iterator iter = ilist2.begin();  
                               iter != ilist2.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    cout << "--------------------------" << endl;  

    ilist1.assign(ilist2.begin(),ilist2.end());
    
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    for (list<int>::iterator iter = ilist2.begin();  
                               iter != ilist2.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ 
pateo@pateo-B86N53X:~/work/study$ 
pateo@pateo-B86N53X:~/work/study$ 
pateo@pateo-B86N53X:~/work/study$ 
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
5 6 7 8 9 
--------------------------
5 6 7 8 9 
5 6 7 8 9 
pateo@pateo-B86N53X:~/work/study$ 

#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int>  ilist1;
    for(size_t ix = 0;ix != 4;++ix)
    {
      ilist1.push_back(ix);
    }

       
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  



    cout << "--------------------------" << endl;  

    ilist1.assign(10,5);
    
    for (list<int>::iterator iter = ilist1.begin();  
                               iter != ilist1.end(); ++iter)  
            cout << *iter << " ";  
    cout << endl;  

   

    return 0;
}

输出:
pateo@pateo-B86N53X:~/work/study$ g++ -o main main.cc    
pateo@pateo-B86N53X:~/work/study$ ./main 
0 1 2 3 
--------------------------
5 5 5 5 5 5 5 5 5 5 
pateo@pateo-B86N53X:~/work/study$ 


vector和deque容器提供了对元素的快速随机访问,但是,在容器的任意位置插入或删除元素,比在容器尾部插入和删除的开销更大,list类型在任何位置都能快速插入和删除,但是随机访问开销更大

抱歉!评论已关闭.