C++常用STL-vector

本文介绍了C++中几种常用的数据结构,如vector(动态数组)的push_back,pop_back,size,clear,at等操作,以及list、set/multiset/map/multimap的特点和操作,还有队列、优先队列和栈的基本概念和示例。
摘要由CSDN通过智能技术生成

vector: 动态数组,提供快速的随机访问和尾部插入操作。

list: 双向链表,支持快速的插入和删除操作,但随机访问效率较低。

set/multiset: 基于红黑树的有序集合,不允许重复元素(multiset允许),支持快速的查找、插入和删除操作。

map/multimap: 基于红黑树的有序映射,键值对的集合,不允许重复键(multimap允许),支持快速的查找、插入和删除操作。

unordered_set/unordered_multiset:
基于哈希表的无序集合,不允许重复元素(unordered_multiset允许),支持快速的查找、插入和删除操作。

unordered_map/unordered_multimap:
基于哈希表的无序映射,键值对的集合,不允许重复键(unordered_multimap允许),支持快速的查找、插入和删除操作。

queue: 队列,先进先出(FIFO)的数据结构,通常使用push和pop进行入队和出队操作。

priority_queue: 优先队列,基于堆实现的数据结构,支持高效的插入和获取最值操作。

stack: 栈,后进先出(LIFO)的数据结构,通常使用push和pop进行入栈和出栈操作。

vector

push_back(): 在向量末尾添加一个元素。
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);

    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}
pop_back(): 删除向量末尾的元素。
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3};
    vec.pop_back();

    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}
size(): 返回向量中的元素个数。
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3};
    std::cout << "Size of vector: " << vec.size() << std::endl;

    return 0;
}
clear(): 清空向量中的所有元素。
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3};
    vec.clear();
    std::cout << "Size of vector after clear: " << vec.size() << std::endl;

    return 0;
}
at(): 返回指定位置的元素,并进行边界检查。
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3};
    std::cout << "Element at index 1: " << vec.at(1) << std::endl;

    return 0;
}
insert(): 在指定位置插入一个或多个元素。
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3};
    vec.insert(vec.begin() + 1, 10); // 在索引为1的位置插入元素10

    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}
erase(): 删除指定位置或指定范围内的元素。
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3};
    vec.erase(vec.begin() + 1); // 删除索引为1的元素

    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}
begin()end(): 返回指向第一个元素和最后一个元素之后位置的迭代器。
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3};
    for (auto it = vec.begin(); it != vec.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值