Vector不清晰点学习易错点

news2024/11/18 15:29:40

什么是迭代器

  • 是一个广义指针
  • 它可以是指针,也可以是一个可对其执行类似指针得操作-如解除引用(如operator*())和递增(operator++())
  • STL中每个容器类都定义了一个合适的迭代器,该迭代器的类型是一个名为iterator的typedef,作用域是整个类
  • 例如:为vector的double类型规范声明一个迭代器
vector<double>::iterator pd; // pd 一个迭代器
vector<double> scores;
pd = scores.begin(); // pd指向了第一个元素
*pd = 22.3;
++pd; // 让pd指向下一个元素
// 自动推到类型
auto pd = scores.begin();
  • end()成员函数标识超过结尾的位置,是一个指向容器最后一个元素后面的那个元素

vector中一个我不熟悉的函数

  • erase()方法删除了矢量中给定区间的元素,接受两个迭代器参数,这些参数定义了要删除的区间
  • insert()方法功能与erase相反,接受3个迭代器参数,第一个参数指定了新元素插入位置,第二个和第三个迭代器定义了被插入的区间,该区间通常为另一个容器对象的一部分
vector<int> old_v;
vector<int> new_v;
...
old_v.insert(old_v.begin(), new_v.begin() + 1, new_v.end());
// 将矢量new_v中除了第一个元素外的所有元素插入到old_v矢量的第一个元素前面

常见的错误

1.先看一段代码

#include <iostream>
using namespace std;
double average1(int array[10])
{
    double result = 0.0;
    int len = sizeof(array) / sizeof(array[0]);
    for (int i = 0; i < len; i++)
    {
        result += array[i];
    }
    return result / len;
}

int main()
{
    std::cout << "Hello World!\n";
    int array1[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
    int len = sizeof(array1)/sizeof(array1[1]);
    cout << average1(array1) << endl;
}

  • 这段代码的基本释义就是计算一个数组的平均值,下面打印的结果
  • 29.1
  • 这是因为,函数average1这个方法的参数是一个指针,不再是一个数组,所以sizeof(array) = sizeof(array[0]) = 4,其实就是一个指针得大小,这个问题就是“数组在做参数时的退化行为”,接下来改进,使用容器的方式
double average3(vector<int>& v)
{
    double result = 0.0;
    vector<int>::iterator it = v.begin();
    // 或者是auto it = v.begin();
    for (; it != v.end(); ++it)
    {
        result += *it;
    }
    return result / v.size();
}

29.2

VS注释快捷键
在这里插入图片描述

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

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

相关文章

解决iPhone无法有效响应问题的指南

当您触摸、滑动和点击屏幕时&#xff0c;iPhone 没有响应或屏幕冻结是很烦人的。不可否认&#xff0c;iPhone 是最好的智能手机之一&#xff0c;但它并不完美。触摸屏冻结是 iPhone 用户面临的最常见问题之一。 好消息是&#xff0c;这个问题通常是由软件错误而不是硬件损坏引…

每日学习一个数据结构-DAG有向无环图

文章目录 有向无环图的特性使用场景 有向无环图&#xff08;Directed Acyclic Graph&#xff0c;简称DAG&#xff09; 是一种特殊的图结构&#xff0c;在数学和计算机科学领域有广泛应用。它由顶点&#xff08;vertices&#xff09;和边&#xff08;edges&#xff09;组成&…

C# Windows EventHandler事件的使用

在实现项目中有这样一个使用场景&#xff0c;在一个独立的类库中&#xff0c;它没有对其他类库的引用。所以它能调用的资源有限。这时想在这个类库的一个窗体中的一个按钮要实现一个功能时就会发现有很多要调用的资源没有&#xff0c;无法实现业务逻辑。这时怎么办&#xff1f;…

如何设置一个拉风的PowerShell命令永久别名?

大家好啊&#xff0c;我是豆小匠。 这期来介绍下怎么在PowerShell中设置自己的命令别名。类似Linux系统的alias&#xff01; 1、设置永久别名 设置永久别名需要把命令写入到Microsoft.PowerShell_profile.ps1文件中&#xff08;ps1就是PowerShell脚本文件的扩展名&#xff09…

华为LTC流程架构分享

文末附LTC流程管理PPT下载链接~ 前面笔者分享了华为LTC流程相关PPT&#xff0c;应读者需求&#xff0c;今天从架构角度进行再次与读者共同学习下LTC流程架构。 华为LTC流程架构是一个全面且集成的业务流程体系&#xff0c;从线索发现开始&#xff0c;直至收回现金&#xff0c…

MySQL基础--表的增删改查

目录 一、前言二、新增&#xff08;Create)2.1 单行数据全列插入2.2 单行数据全列插入&#xff08;简写&#xff09;2.3 指定列插入2.4 多行插入 三、查询3.1 全列查询3.2 指定列查询3.3 查询的结果是一个表达式3.3.1 把所有的语文成绩在原本的基础上加一分3.3.2 列与列之间的计…

Docker精讲:基本安装,简单命令及核心概念

docker服务部署 docker是一个容器管理工具&#xff0c;其内部容器才是具体服务&#xff0c;所以我们在安装docker时不需要有太多定制内容&#xff0c;只需要通过yum安装即可 1. 更新系统包 #更新现有依赖包&#xff0c;防止现有依赖包版本过低影响docker安装 yum update2. 安…

【Python】FeinCMS:轻量级且可扩展的Django内容管理系统

在互联网飞速发展的今天&#xff0c;内容管理系统&#xff08;CMS&#xff09;成为了网站开发中的核心工具&#xff0c;尤其对于需要频繁更新内容的企业和个人站点而言&#xff0c;CMS 提供了极大的便利。市场上有许多不同的 CMS 工具可供选择&#xff0c;其中基于 Django 框架…

游戏如何对抗改包

游戏改包是指通过逆向分析手段及修改工具&#xff0c;来篡改游戏包内正常的设定和规则的行为&#xff0c;游戏包被篡改后&#xff0c;会被植入/剔除模块进行重打包。 本期图文我们将通过实际案例分析游戏改包的原理&#xff0c;并分享游戏如何应对改包问题。 安卓平台常见的改…

Arch - 架构安全性_保密(Confidentiality)

文章目录 OverView导图保密保密强度与成本客户端加密密码存储与验证 Code总结 OverView 即使只限定在“软件架构设计”这个语境下&#xff0c;系统安全仍然是一个很大的话题。 接下来我们将对系统安全架构的各个方面进行详细分析&#xff0c;包括认证、授权、凭证、保密、传输…

三菱PLC数据 转 profinet IO项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 网关采集三菱PLC数据 2 5 用PROFINET IO协议转发数据 5 6 其他说明 8 7 案例总结 9 1 案例说明 设置vfbox网关采集三菱PLC数据把采集的数据转成profinet IO协议转发给其他系统。 2 VFBOX网关工作原理 VFBOX网关是协…

探索光耦:光耦在电脑电源中的应用及其重要性

随着计算机技术的飞速发展&#xff0c;电脑已成为现代生活和工作中不可或缺的工具。无论是日常办公、游戏娱乐还是复杂的图像处理&#xff0c;电脑电源的稳定性和安全性都至关重要。作为电脑电源的核心部件之一&#xff0c;光耦&#xff08;光电耦合器&#xff09;在提升电源性…

智慧场馆智能化设计方案

1. 智慧场馆智能化规划设计方案 本方案针对智慧场馆的智能化系统进行综合设计&#xff0c;包括入侵报警、视频监控、门禁管理、公共广播等子系统&#xff0c;旨在实现智慧、安全、节能的现代化场馆。 2. 系统设计范围 设计内容广泛&#xff0c;覆盖了从安全监控到环6境监测&…

【期刊】论文索引库-SCI\SSCI\IE\南大核心\北大核心\CSCD等

外文期刊检索 SCI SCI即《科学引文索引》(Science Citation Index),是由美国科学信息研究所(Institute for Scientific Information)创建于1961年,收录文献的作者、题目、源期刊、摘要、关键词,不仅可以从文献引证的角度评估文章的学术价值,还可以迅速方便地组建研究课…

基于php的律所管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

Tomcat安装和配置教程(图文详解,最简洁易懂)

本教程主要分为两个部分&#xff1a;Tomcat的下载和安装、Tomcat的配置 前提 Tomcat都需要Java环境&#xff0c;所以首先需要安装JDK,本教程默认已安装JDK1.8 未安装JDK可看JDK安装教程&#xff1a;JDK1.8安装教程 一、Tomcat下载和安装 1、首先进入Apache Tomcat官网&…

ATLAS/ICESat-2 L3B Monthly Gridded Atmosphere (大气月度网格数据集)V005

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Monthly Gridded Atmosphere V005 简介 该产品报告每周全球云覆盖率、海洋上总列光学深度、极地云覆盖率、风吹雪频率、视表面反照率以及地面探测频率。 参数&#xff1a;云光学…

github双重验证(2FA)启用方法

一、双重验证-2FA 在去年看到过说github启用双重验证的通知&#xff0c;觉得做为一个普通开发者&#xff0c;可能没有这么快会要求启用。结果&#xff0c;今天早晨一来就收到了邮件&#xff0c;要求说在11月底完成2FA的认证&#xff0c;否则权限受限。真是无了语。所谓2FA好理…

基于SSH的酒店管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSH的酒店管理系统拥有三种角色 管理员&#xff1a;用户管理、房间分类管理、房间信息管理、开房管理、退房管理、开房和预订记录查询等 前台&#xff1a;房间分类管理、房间信息管…

工作中使用人工智能的政策和程序的重要性

在当今快速发展的技术环境中&#xff0c;人工智能 (AI) 已成为各行各业业务运营不可或缺的一部分。作为政策管理者&#xff0c;必须了解在组织内制定强有力的 AI 使用政策和程序的重要性。 这不仅可以确保合规性和道德标准&#xff0c;还可以保护组织免受潜在风险并最大限度地…