有没有做卡哇伊的企业网站,我要下载百度,建设平台类网站需要多少钱,wordpress pre插件最近用set比较多#xff0c;复习一下基础。
在C中#xff0c;vector、deque、list、set、multiset、unordered_set和unordered_multiset都是容器类#xff0c;但它们有不同的特点和用途。下面是对它们的区别和示例说明#xff1a;
1. vector
特点: 动态数组#xff0c;…最近用set比较多复习一下基础。
在C中vector、deque、list、set、multiset、unordered_set和unordered_multiset都是容器类但它们有不同的特点和用途。下面是对它们的区别和示例说明
1. vector
特点: 动态数组支持快速随机访问通过索引。时间复杂度: 插入和删除操作在末尾是常数时间复杂度在中间和开头是线性时间复杂度。访问元素是常数时间复杂度。用途: 适用于需要频繁随机访问和在末尾进行插入和删除的情况。
#include vector
#include iostreamint main() {std::vectorint vec {1, 2, 3};vec.push_back(4); // 在末尾插入vec[1] 10; // 通过索引访问和修改for (int n : vec) {std::cout n ;}std::cout std::endl;return 0;
}2. deque
特点: 双端队列支持快速在两端进行插入和删除。时间复杂度: 两端插入和删除是常数时间复杂度随机访问是常数时间复杂度。用途: 适用于需要在两端进行插入和删除操作的情况。
#include deque
#include iostreamint main() {std::dequeint deq {1, 2, 3};deq.push_front(0); // 在前端插入deq.push_back(4); // 在末尾插入for (int n : deq) {std::cout n ;}std::cout std::endl;return 0;
}3. list
特点: 双向链表支持快速在任意位置进行插入和删除但不支持随机访问。时间复杂度: 插入和删除是常数时间复杂度访问元素是线性时间复杂度。用途: 适用于需要频繁插入和删除元素而不需要随机访问的情况。
#include list
#include iostreamint main() {std::listint lst {1, 2, 3};lst.push_front(0); // 在前端插入lst.push_back(4); // 在末尾插入auto it lst.begin();std::advance(it, 2);lst.insert(it, 10); // 在中间插入for (int n : lst) {std::cout n ;}std::cout std::endl;return 0;
}4. set
特点: 有序集合元素不重复自动排序。时间复杂度: 插入、删除、查找操作是对数时间复杂度。用途: 适用于需要有序集合且元素唯一的情况。
#include set
#include iostreamint main() {std::setint s {3, 1, 2};s.insert(4); // 插入元素for (int n : s) {std::cout n ;}std::cout std::endl;return 0;
}5. multiset
特点: 有序集合允许重复元素自动排序。时间复杂度: 插入、删除、查找操作是对数时间复杂度。用途: 适用于需要有序集合且允许重复元素的情况。
#include set
#include iostreamint main() {std::multisetint ms {3, 1, 2, 2};ms.insert(4); // 插入元素for (int n : ms) {std::cout n ;}std::cout std::endl;return 0;
}6. unordered_set
特点: 无序集合元素不重复使用哈希表实现。时间复杂度: 插入、删除、查找操作是平均常数时间复杂度。用途: 适用于需要快速查找且不关心顺序的情况。
#include unordered_set
#include iostreamint main() {std::unordered_setint us {3, 1, 2};us.insert(4); // 插入元素for (int n : us) {std::cout n ;}std::cout std::endl;return 0;
}7. unordered_multiset
特点: 无序集合允许重复元素使用哈希表实现。时间复杂度: 插入、删除、查找操作是平均常数时间复杂度。用途: 适用于需要快速查找且允许重复元素的情况。
#include unordered_set
#include iostreamint main() {std::unordered_multisetint ums {3, 1, 2, 2};ums.insert(4); // 插入元素for (int n : ums) {std::cout n ;}std::cout std::endl;return 0;
}