C++标准库---STL三大序列容器vector deque list

180it 2020-10-15 PM 1420℃ 0条

序列式容器:

其中每个元素均有固定位置---取决于插入时机和地点,和元素值无关。,元素顺序与插入时的顺序一致,和元素的值无关。

关联式容器:

元素位置取决于特定的排序准则,如果将六个元素置于这样的群集中,它们的位置取决于元素值,和插入次序无关。

下面介绍以下STL三大序列容器:

vector:支持随机存取,也就是说可以直接利用索引存取任何一个元素,在尾部加插入元素均非常快速,但是在头部或中间插入元素比较费时。因为为了保持原来的相对次序,安插点之后的所有元素都必须移动,挪出位子来。

deque:支持随机存取,可以向两端发展,即可以在头部和尾部插入数据,并且在两端插入数据的速度十分迅速,但是在中间部分安插元素则比较费时,因为必须移动其他元素。

list:双向链表,不支持随机存取,list内的每个元素都以一部分内存指示其前驱元素和后继元素。优势在于:在任何位置上执行插入或删除动作都非常迅速,因为只需要改变链接就行。这表示在list中间位置移动元素比在vector和deque快得多。

下面看示例代码:

//vector
#include<iostream>
#include<vector>
 
using namespace std;
 
int main()
{
    vector<int> a;
 
    for(int i=1;i<=6;i++)
    {
        a.push_back(i);
    }
 
    int len=a.size();
 
    for(int i=0;i<len;i++)
    {
        cout<<a[i]<<" ";
    }
    cout<<endl;
 
    system("pause");
    return 0;
}

运行结果:
1 2 3 4 5 6

//deque
#include<iostream>
#include<deque>
 
using namespace std;
 
int main()
{
    deque<double> a;
 
    for(int i=1;i<=6;i++)
    {
        a.push_front(i*1.1);//向前插入数据
    }
 
    for(int i=7;i<=9;i++)
    {
        a.push_back(i*1.1);//向后插入数据
    }
 
    int len=a.size();
    for(int i=0;i<len;i++)
    {
        cou

t<<a[i]<<" ";

}
cout<<endl;

system("pause");
return 0;

}

运行结果:
6.6 5.5 4.4 3.3 2.2 1.1 7.7 8.8 9.9

//list
#include<iostream>
#include<list>
 
using namespace std;
 
int main()
{
    list<char> a;
 
    for(char c='a';c<='z';c++)
    {
        a.push_back(c);//向后插入数据
    }
 
    while(!a.empty())
    {
        cout<<a.front()<<" ";//输出最前面的数据
        a.pop_front();       //输出后删除最前面的数据 
    }
    cout<<endl;
 
    system("pause");
    return 0;
}

运行结果:
a b c d e f g h i j k l m n o p q r s t u v w x y z

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

C++标准库---STL三大序列容器vector deque list