基本STL使用

news2024/11/18 23:23:35

一 、关于vector

在STL中有一个称为vector的数据结构,可以用来代替数组。

定义Book特性

    private:
        vector<string> shelf_books;

Notic :  类中不能使用类似的定义:vector<sttring> shelf_boos( 10 );

定义Book方法

    public:
        void setName(string name)
        {
            shelf_books.push_back(name);
        }

        string getName(unsigned short idx)
        {
            if (idx < shelf_books.size())
                return shelf_books[idx];
            else
                return "NULL";
        }

        unsigned short getSize(void)
        {
            return shelf_books.size();
        }

        vector<string>& getVector()
        {
            return shelf_books;
        }

        void display_all(void)
        {
            unsigned short idx = 0U;
            cout << "There are " << shelf_books.size() << " books:" << endl;
            for(string name : shelf_books)
            {
                cout << name << endl;
            }
        }

测试:

    Book book;

    book.setName("Issta");
    book.setName("Gao");
    book.setName("Hello");
    book.setName("你好");

    book.display_all();

    cout << "--------------------------------" << endl;

    vector<string>& b_v = book.getVector();
    for(string _name : b_v)
    {
        cout << _name << endl;
    }

    cout << "--------------------------------" << endl;

    for(unsigned short idx = 0; idx < book.getSize(); idx++)
    {
        cout << book.getName(idx) << endl;
    }

    cout << "--------------------------------" << endl;

输出:

二、静态vector与iterator

int key = itr->first; // 从迭代器中获得键
int value = itr->second; // 从迭代器中获得值

代码

   vector<string> wap(5);
    wap[0] = "激光大炮";
    wap[1] = "巡航导弹";
    wap[2] = "喀秋莎";
    wap[3] = "导弹";
    wap[4] = "东风快递使命必达";

    for(int i = 0; i < wap.size(); i++)
    {
        cout << wap[i] << endl;
    }

    cout << "Next using iterator..." << endl;

    vector<string>::iterator  wap_itr = wap.begin();
    vector<string>::iterator  wap_itr_end = wap.end();

    for(;  wap_itr != wap_itr_end; ++wap_itr)
    {
        cout  << *wap_itr << endl;
    }


    cout << "--------------------------------" << endl;

测试结果

三、map与iterator

特征

    private:
        map<string, string> name_to_email;

属性

       void add_context(string name, string email)
        {
            name_to_email["issta"] = "issta0309@163.com";
            name_to_email[name] = email;
        }

        void  show_email(void)
        {
            if(!name_to_email.empty())
            {
                cout <<  "there are :" << name_to_email.size() << endl;
                cout << name_to_email["issta"] << endl;
                cout << name_to_email["Lucy"] << endl;
            }

            cout << "Now using iterator..." << endl;
            
            map<string, string>::iterator  map_itr = name_to_email.begin();
            map<string, string>::iterator  map_itr_end = name_to_email.end();

            for(;  map_itr != map_itr_end; ++map_itr)
            {
                cout  << map_itr->first << " --> " << map_itr->second << endl;
            }

            map<string, string>::iterator  find_itr = name_to_email.find("Lucy");
            if(find_itr != map_itr_end)
            {
                cout << "Lucy's email address is : " << find_itr->second << endl;
            }



            name_to_email.clear();

            if(name_to_email.empty())
            {
                cout << "clear successful!" << endl;
            }

测试代码

    book.add_context("Lucy", "glb_moonkey@soho.com");
    book.show_email();

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

平面模型上提取凸凹多边形------pcl

平面模型上提取凸凹多边形 pcl::PointCloud<pcl::PointXYZ>::Ptr PclTool::ExtractConvexConcavePolygons(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud) {pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);p…

概述CoAP协议

目录 概述 1 认识CoAP协议 2 CoAP的消息 2.1 CoAP消息类型 2.2 可靠传输和不可靠传输 2.2.1 可靠传输 2.2.2 不可靠消息 2.3 Request/Response Model 3 CoAP消息的格式 3.1 格式介绍 3.2 协议分析 4 CoAP URL 4.1 coap URI Scheme 4.2 coaps URI Scheme 5 Co…

Pytorch GPU版本安装

一、背景 记录一下安装Pytorch GPU版本过程。 由于手残&#xff0c;卸载了电脑上的显卡驱动&#xff0c;现在我连显卡类型是啥都不知道了。 总体思路&#xff1a;安装显卡驱动->安装cuda->安装pytorch库 二、安装显卡驱动 2.1 查看本地显卡型号 通过「DirectX 诊断工具…

基于模板的图像拼接02

基于模板的图像拼接_图像拼接算法模板匹配-CSDN博客 之前的代码在计算模板位置后&#xff0c;高度方向上的值调整时不对。 if height_dst matchRight_H: matchRight imageRight[max_loc[1] - left_height_begin: height_Right, max_loc[0]:width_Right] elif hei…

【全网首发】2024五一数学建模ABC题保奖思路(后续会更新)

一定要点击文末的卡片哦&#xff01; 1&#xff09;常见模型分类 机理分析类&#xff1a;来源于实际问题&#xff0c;需要了解一定的物理机理&#xff0c;转化为优化问题。 运筹优化类&#xff1a;旨在找到使某个目标函数取得最大或最小值的最优解,对于机理要求要求不高&…

QT之信号和槽

在刚刚了解Qt的时候&#xff0c;为了通过按钮显示 hello world 的时候曾说明过信号与槽&#xff0c;虽然没有细说&#xff0c;不过也算是接触过。 而本文就会细细说明什么是 Qt 的信号与槽。 概念初识 在 linux 学进程相关的内容的时候&#xff0c;曾了解过信号是操作系统控…

【分治算法】【Python实现】整数划分问题

文章目录 [toc]问题描述分治算法Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;分治算法 学习指南&#xff1a;Python学习指南 问题描述 将正整数 n n n表示成一系列正整数之和&#xff0c; n n 1 n 2 ⋯ n k ( n 1 ≥ n 2 ≥ ⋯ ≥ n k ≥ 1 , k ≥ 1 ) …

【蓄水池问题】太 nice 了!我中奖啦!

小伙伴们中过奖么&#xff1f; 是不是都是 中奖绝缘体 呢&#xff1f; 今天我们就来聊一聊关于中奖的 概率 问题~ 先思考两个问题 如果让你从规模为 N 的数据序列中&#xff0c;随机选取出 k 个不重复的数据&#xff0c;你会怎么做呢&#xff1f; 是不是很简单&#xff0c…

商务口才的谈话技巧(3篇)

商务口才的谈话技巧&#xff08;3篇&#xff09; 商务口才的谈话技巧&#xff08;一&#xff09; 在商务沟通中&#xff0c;有效的谈话技巧至关重要。首先&#xff0c;倾听是建立信任和理解的基础。真正聆听对方的观点和需求&#xff0c;不仅能让对方感受到尊重&#xff0c;还能…

C++协程库封装

操作系统&#xff1a;ubuntu20.04LTS 头文件&#xff1a;<ucontext.h> 什么是协程 协程可以看作轻量级线程&#xff0c;相比于线程&#xff0c;协程的调度完全由用户控制。可以理解为程序员可以暂停执行或恢复执行的函数。将每个线程看作是一个子程序&#xff0c;或者…

代码随想录算法训练营第59天|503.下一个更大元素II、42. 接雨水

503.下一个更大元素II 题目链接&#xff1a;下一个更大元素II 题目描述&#xff1a;给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数…

TDengine写入2000万数据查询体验

最近在寻找时序数据库&#xff0c;想应用在公司的项目上。 上一篇文章实验了InfluxDB:windows上使用influx2.7学习,还学习了flux语言&#xff0c;最后发现宽表查询比较困难&#xff0c;就放弃了&#xff0c;于是决定试试国产时序数据库TDengine 参考 官方文档&#xff1a;htt…

OpenSSH 漏洞补丁更新笔记

OpenSSH 漏洞补丁更新笔记 相关背景OpenSSH 8.8 以后版本弃用RSA 以及影响centos 更新openssh9.7p1通过rpm包进行安装 Ubuntu更新openssh-9.5p1前置条件下载的源码包导入服务器后操作 相关背景 客户通过第三方扫漏工具发现服务器centos8和Ubuntu22.04有OpenSSH 相关高危漏洞 扫…

Linux 第十八章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

【C#】基础知识

0.参考 C#语言入门详解 1.几种打印hello_world的方式 1.1 console控制台 新建一个console&#xff0c;直接打印&#xff1a; Console.WriteLine("Hello_world");启动一闪而过&#xff0c;在vs调试中选择开始执行不调试&#xff08;without debug&#xff09;。 …

el-tabs作为子组件使用页面空白

文章目录 前言一、问题展示二、源码分析三、解决方案 前言 如果el-tabs是子组件&#xff0c;父组件传值value / v-model为空字符&#xff0c;这个时候在watch中监听value / v-model就会发现监听的数据会被调用为‘0’。一定是作为子组件引用&#xff0c;且在watch进行监听&…

5.C++动态内存管理(超全)

目录 1 .C/C 内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 3.3 operator new函数 3.4 定位new表达式(placement-new) &#xff08;了解&#xff09; 4. 常…

开发一个语音聊天社交app小程序H5需要多少钱?

社交&#xff0c;即时通讯APP系统。如何开发一个社交App||开发一个即时通信应用是一项复杂而充满挑战的任务&#xff0c;需要考虑多个技术、开发时间和功能方面的因素。以下是一个概要&#xff0c;描述了从技术、开发时间和功能角度如何开发这样的应用&#xff1a; 1. 技术要点…

Centos7.9系统MySQL5.7.32升级为5.7.44(生成环境操作)

1.背景 由于客户进行等保漏扫和渗透&#xff0c;生成环境mysql数据库被扫描出了 高危漏洞。 如图&#xff1a;部分漏洞 查看漏洞详细信息&#xff0c;建议升级到指定版本解决&#xff1a; 说明&#xff1a; 本文仅适合使用当前数据库为 RPM 安装方式 2.升级前准备 查看环…

STM32-HAL库12-STM32F407VGT6的PWM主从定时器,发送指定数量脉冲

STM32-HAL库12-STM32F407VGT6的PWM主从定时器&#xff0c;发送指定数量脉冲 一、所用材料 STM32F407VGT6自制双伺服电机控制板&#xff1b; 一川A1系列伺服电机驱动器&#xff08;电0.73KW电机&#xff09;&#xff1b; 二、所学内容 实现PWM发送指定个数脉冲&#xff0c;以…