std::set与std::vector在C++ STL中的区别

std::set与std::vector在C++ STL中的区别

向量: 向量是类似动态数组的容器,具有在插入或删除新元素时调整大小的能力。它是标准模板库(STL)的模板,提供了程序的更大灵活性。向量的元素被放置在连续的存储器中,并使用迭代器遍历。

例子:

vector <int> v;
v.push_back(1);
v.push_back(2);
v.clear();

下面是在C++中使用向量的实现:

// C++ program to demonstrate the
// working of vector in cpp
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    vector<int> v;
 
    // Inserting elements in vector
    v.push_back(11);
    v.push_back(6);
    v.push_back(12);
    v.push_back(0);
    v.push_back(0);
 
    // Elements are stored in the
    // order of insertion with the
    // duplicate element
    cout << "Elements in vector are:\n";
    for (auto it : v) {
        cout << it << " ";
    }
 
    return 0;
}  

输出:

Elements in vector are:
11 6 12 0 0

时间复杂度:O(N)//对于N次插入
辅助空间:O(1)

集: 集也是标准模板库(STL)的模板之一。它是一个唯一元素的容器,一旦添加到集中,其值就不能被修改,但可以删除或插入。集合的元素总是以排序形式存储。

例子:

set <int> s;
s.insert(1);
s.insert(12);
int key = 1;
s.erase(key);

下面是在C++中使用集的实现:

// C++ program to demonstrate the
// working of set in c++
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    set<int> s;
 
    // Insert elements into the set
    s.insert(11);
    s.insert(6);
    s.insert(12);
    s.insert(0);
 
    // Duplicate elements
    s.insert(0);
 
    cout << "Elements in set:\n";
 
    // The inserted elements get sorted
 
    // Print the elements of the set
    for (auto it : s) {
        cout << it << " ";
    }
 
    return 0;
}  

输出:

Elements in set:
0 6 11 12

时间复杂度:O(Nlog N)//对于N次插入

辅助空间:O(1)

向量和集之间的表格差异:

向量
向量的元素是未排序的。 集的元素总是排序的。
它可以包含重复元素。 它只包含唯一元素。
向量是无序的。 集是有序的。
插入新元素的时间复杂度为O(1)。 插入新元素的时间复杂度为O(log N)。
向量在容器末尾插入和删除元素速度更快。 集合在容器中间插入和删除元素速度更快。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程