C++容器常见函数操作

博客围绕C++容器展开,虽未给出具体内容,但可知核心聚焦于C++容器这一信息技术领域的关键内容。C++容器在编程中应用广泛,能高效存储和管理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


#include <iostream>
#include <vector>
#include <string>
#include <deque>
#include <list>
#include <forward_list>
#include <array>
using namespace std;
int main()
{
    /*--------------------- vector容器的一些操作  ------------------*/
    vector<int> vect1;            // 定义一个vector容器
    vect1.push_back(1);            // push_back: 向容器的末尾添加元素
    vect1.push_back(2);
    vect1.push_back(3);
    vect1.pop_back();            // pop_back: 去除末尾的元素
    vect1.insert(vect1.begin() + 1, 8);    // 在某个位置插入一个元素,效率低,不适合大批操作
    vect1.at(0);                        // at:取某个位置的元素
    vect1.capacity();                    // capacity: 不分配新的内存空间的前提下它最多能保存多少元素。这个和下面的size 是有区别的!!
    vect1.size();                        // size: 已经保存的元素的数目
    vect1.empty();                        // empty:判断容器是否为空
    vect1.front();                        // front:取第一个元素
    vect1.back();                        // back:取最后一个元素
    vect1.erase(vect1.begin() + 1);        // erase:删除指定位置的元素
    vector<int> vect2;
    vect2.assign(vect1.begin(), vect1.end()); // 赋值操作
    /*------------------------------------------------------------*
    // 其他容器操作都和vector差不多,以下列举一些其他容器特有的操作
    /*--------------------- string容器一些操作  --------------------*/
    string str1 = "Hello Ace";            // string的几种构造方法
    string str2("Hello World");        
    string str3(str1, 6);                // 从str1下标6开始构造, str3 -> Ace
    string str4 = str2.substr(0, 5);    // 求子串: str4 -> Hello
    string str5 = str2.substr(6);        // 求子串: str5 -> World
    string str6 = str2.substr(6, 11);    // 求子串: str6 -> World
    // string str7 = str2.substr(12);    // 抛异常: out_of_range
    string str8 = str2.replace(6, 5, "Game");    // 替换:str8 -> Hello Game 从位置6开始,删除5个字符,并替换成"Game"
    string str9 = str2.append(", Hello Beauty");// 追加字符串: str9 -> Hello World, Hello Beauty
    auto pos1 = str1.find("Ace");                // 查找字符串    : pos1 -> 6 ,返回第一次出现字符串的位置,如果没找着,则返回npos
   int res = str1.compare("Hello, Ace");        // 比较字符串: res -> -1, 根据str1是等于、大于还是小于参数指定的字符串, 返回0、整数或者负数
    string str10 = "Pi = 3.14159";
    double pi = stod(str10.substr(str10.find_first_of("+-.0123456789")));    // 数值转换: pi -> 3.14159
    /*------------------------------------------------------------*/
    /*--------------------- deque容器一些操作  --------------------*/
    deque<int> d1;
    d1.push_back(1);                            // 尾后压入元素
    d1.push_back(2);
    d1.push_back(3);
    d1.push_front(4);                            // 队头压入元素
    d1.push_front(5);
    d1.push_front(6);
    d1.pop_back();                                // 尾后弹出一个元素
    d1.pop_front();                                // 队头弹出一个元素
    d1.front();                                    // 取队头元素
    d1.back();                                    // 取队尾元素
    /*------------------------------------------------------------*/
    /*--------------------- list容器一些操作  --------------------*/
    list<int> l;
    l.push_back(1);                                // 尾后压入元素
    l.push_back(2);
    l.push_back(3);
    l.push_front(4);                            // 队头压入元素
    l.push_front(5);
    l.push_front(6);
    l.pop_back();                                // 尾后弹出一个元素
    l.pop_front();                                // 队头弹出一个元素
    l.front();                                    // 取队头元素
    l.back();                                    // 取队尾元素
    l.insert(l.begin(), 88);                    // 某个位置插入元素(性能好)
    l.remove(2);                                // 删除某个元素(和所给值相同的都删除)
    l.reverse();                                // 倒置所有元素
    l.erase(--l.end());                            // 删除某个位置的元素(性能好)
    /*------------------------------------------------------------*/
    /*--------------------- forward_list容器一些操作  --------------*/
    forward_list<int> fl = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    fl.push_front(0);                // 压入元素,该容器没有push_back方法
    auto prev = fl.before_begin();    // 表示fl的"首前元素"
    auto curr = fl.begin();            // 表示fl的第一个元素
    // 循环遍历
    while (curr != fl.end())        // 表示仍有元素要处理
    {
        if (*curr % 2)                // 若元素为奇数,则删除
        {
            curr = fl.erase_after(prev);    // 删除它并移动curr
        }
        else
        {
            prev = curr;            // 移动迭代器curr,指向下一个元素,prev指向curr之前的元素
            ++curr;
        }
    }
    // 操作后: fl = {0, 2, 4, 6, 8}
    /*------------------------------------------------------------*/
    /*--------------------- array容器一些操作  --------------------*/
    array<int, 5> myArray1 = { 1, 2, 3, 4, 5 };    // 定义一个一维数组
    array<array<int, 2>, 3> myArray2 = {1, 2, 3, 4, 5, 6};    // 定义一个二维数组
    array<int, 5> myArray3 = {6, 7, 8, 9, 10};
    array<int, 5> myArray4;                // 此数组并未初始化
    // array.resize();        // array 不能有改变容器大小的操作,它的效率比vector高
    myArray1.swap(myArray3);// 交换两个数组的的元素
    myArray4 = myArray1;    // 支持直接这样赋值,原生的数组不可以这样。它把值全部复制过去,而不是引用
    myArray1.assign(0);        // 把myArray1的元素全部置为0
    // 遍历数组元素
    for (int i = 0; i < myArray1.size(); ++i)
    {
        cout << myArray1[i] << endl;
    }
    /*------------------------------------------------------------*/
    return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值