首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++】STL 容器 - vector 动态数组容器 ⑥ ( 使用迭代遍历 vector 容器步骤 | 获取指容器向首元素的迭代 begin 函数 | 获取末尾迭代 | * 迭代解引用 )

; iterator begin(); const_iterator begin() const; 上述个函数都返回一个 指向容器中 首元素的迭代 ; 第一个重载版本函数 是 非常量迭代 ,...可以用来修改容器中的元素 ; 第二个重载版本函数 是 常量迭代 , 不能用来修改容器中的元素 ; 返回的迭代 可以使用 * 操作符进行解引用操作 , 获取迭代指向的元素的值 ; 代码示例 : #include...<< endl; // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : 末尾迭代指向 容器中 最后一个元素 之后一个位置..., 使迭代指向 下一个元素 , 这两个函数 都只能用于 非常量迭代 ; 前置递增操作符 ++ : 返回一个引用到修改后的迭代本身 , 允许你在一个语句中递增迭代并使用它 ; 后置递增操作符...++ : 返回一个新的迭代 , 该迭代指向下一个元素 , 原来的迭代保持不变 ; 这个操作符重载了 int 参数,以避免与前置递增操作符的优先级混淆 代码示例 : // 创建空的 vector

1.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

【C++】STL 容器 - vector 动态数组容器 ⑧ ( vector 容器添加 删除元素 | clear 函数 | insert 函数 | erase 函数 )

索引位置 的元素 ; iterator#erase() 函数原型如下 : iterator erase( const_iterator pos ); 该 erase() 函数 接受一个指向要删除的元素的常量迭代作为参数...函数原型如下 : iterator erase( const_iterator first, const_iterator last ); iterator#erase() 函数 接受两个指向要删除的元素的常量迭代作为参数...pop_back(); 2、vector 容器 指定位置 插入 一个元素 - insert 函数 调用 insert 函数 , 向 vector 容器 指定位置 插入 一个元素 , 该函数 接受一个指向插入位置的常量迭代和一个要插入的元素作为参数.... 3、vector 容器 指定位置 插入 若干相同元素 - insert 函数 调用 insert 函数 , 向 vector 容器 指定位置 插入 若干相同元素 , 该函数 接受一个指向插入位置的常量迭代和一个要插入的元素作为参数...vector 容器指定范围的元素 - insert 函数 调用 insert 函数 , 向 vector 容器 指定位置 插入 其它 vector 容器指定范围的元素 , 该函数 接受一个指向插入位置的常量迭代和一个要插入的元素作为参数

2.3K11

【笔记】《C++Primer》—— 第一部分:C++基础

(iterator)的操作思路是和C的指针一致的,但是又要比指针安全方便很多 迭代的类型比较复杂,一般是容器名::iterator,还有常量迭代,表示内容是只读的,类型是容器名<元素类型...由于写起来比较麻烦,大多数时候使用auto来表示会更舒服 容器的迭代可以使用支持的容器自带的函数begin()和end(),想要得到常量迭代的话就使用cbegin()和cend() 千万不要在使用迭代的时候改变容器的结构...(增减元素),这会使迭代失效 迭代做差得到的返回值是迭代的距离,类型difference_type,是个有符号数 数组的索引类型是size_t,也是无符号数 数组和指针的使用,引入了std::begin...(),std::end()函数,可以给数组使用并返回类似上面迭代的指针 两个指针相减得到地址差的类型是ptrdiff_t的类型,也是有符号数。...类来代劳内存分配等能避免拷贝构造时复杂的传值过程 访问控制符有效范围直到下个访问控制符出现或者到达类的结尾,控制符可以出现多次 有时需要外部的接口函数也可以访问类内的非公有成员,可以在开头加上friend关键字使之成为友元

1.4K40

C++ STL 详解

双端队列deque 基本上与向量相同,唯一的不同是,其在序列头部插入和删除操作也具有常量时间复杂度 表list 对任意元素的访问与对两端的距离成正比,但对某个位置上插入和删除一个项的花费为常数时间...具有快速查找能力 3、迭代 它的具体实现在中,我们完全可以不管迭代类是怎么实现的,大多数的时候,把它理解为指针是没有问题的(指针是迭代的一个特例,它也属于迭代...迭代功能 输入迭代 Input iterator 、Reads forward istream 输出迭代 Output iterator 向前写 Writes forward ostream,...另外一个限制就是任何一种可能改变vector对象容量的操作,不如push_back,都会使该迭代失效。 总而言之就是:但凡使用了迭代的循环体,都不要向迭代所属的容器添加元素!...() 将重复的元素摺叠缩编,使成唯一 unique_copy() 将重复的元素摺叠缩编,使成唯一,并复制到他处 upper_bound() 上限

1.1K40

Go语言之父带你重新认识字符串、字节、rune和字符

现在,让我们关注点保持在字节上。下面是逐字节循环的输出: bd b2 3d bc 20 e2 8c 98 注意各个字节与定义字符串的十六进制转义符匹配是如此地匹配。...此标志使输出在解释 UTF-8 时不仅转义不可打印的序列,而且还会转义所有非 ASCII 字节。...下面是我们已列出的所有打印选项的全集,以完整的程序形式呈现出来,您可以在浏览中直接运行和编辑: 译注:指的是在 go playground 的浏览运行环境中。...这意味着当我们在源代码中编写文本时 `⌘` 用于创建程序的文本编辑将符号⌘的 UTF-8 编码放入源文本中。当我们打印出十六进制字节时,我们只是在输出了编辑放置在源码文件中的数据。...此外,你可能会认为是字符常量常量在 Go 中称为 rune 常量。下面表达式的类型和值 '⌘' 是 rune,它的整数值为 0x2318。 总结一下,这是要点: Go 源代码始终为 UTF-8。

84120

STL容器分类「建议收藏」

STL中的序列容器有3种: n vector(向量)——提供对变长序列的快速随机访问 (即对第i个元素的访问时间,是与i无关的常量),对序列末尾的插入和删除操作的时间是分摊常量;(...;(似双向变长数组)(对应于deque类,定义在头文件中); n list(表)—— 提供对变长序列的线性时间访问(O(N),N为序列的当前长度),但是在序列的任意位置的插入和删除操作均为常量时间...特别是,容器适配器不提供迭代。...基本串basic_string提供下标操作、随机访问迭代和其他序列容器的几乎所有功能,但是它不像容器那样支持广泛的元素类型选择,而且它还为作为字符串使用而进行了优化,所以其典型使用方式与容器有着显著差异...valarray提供了许多有用的数值运算和常用的数学函数,但是它只提供了标准容器操作中的size()和下标操作,此外,其中元素的指针是一种随机迭代

70410

【机器学习】xgboost系列丨xgboost原理及公式推导

boost的思想是将一系列弱分类串行的组合起来,在前面的分类的基础上迭代的优化新的分类。 ? 首先我们对所有的数据默认预测一个固定值 ?...,之后每次迭代时都是根据其之前所有树做出的预测之和与真实y值的损失来建立新树。也就是每次迭代建树时用新树 ? 来优化前一个树的损失 。 ? 为第t棵树对第i个样本做出的预测。...如果定义在一个包含a的区间上的函数f在a点处n+1次可导,那么对于这个区间上的任意x,则有: ? 其中的多项式称为函数在a处的泰勒展开式,剩余的 ? 是泰勒公式的余项,是 ? 的高阶无穷小。...为常量,优化的是损失函数的最小值,因此常量值可以从损失函数中去掉。上式可简化为: ? 叶节点权重 ? 式中正则项 ? 进行展开,得: ? 其中 ?...使 ? 最小,显然这是个一元二次方程求最小值问题。 ? 可以得到叶节点权重 ? 的最优值: ? 分裂准则 ? 上面是对单个叶节点计算出了最优权重,对于新建的这树(树结构 ?

1.3K20

【C++】STL 标准模板库 ① ( STL 简介 | STL 基本概念 | STL 主要内容 )

Library " , STL 是一套强大的 C++ 库 , 其中包含了各种通用的 数据结构和算法 , 如 : 向量、列表、队列、排序等 ; STL 是 C++ 标准的一部分 , 所有的 C++ 编译..., 但在 序列尾部 进行 插入 和 删除时 , 具有常量时间复杂度 ; 双端队列 deque : 与向量类似 , 不同之处是 双端队列可以 在序列头部 插入和删除 操作 , 具有常量时间复杂度 ; 表...多重映射 multimap : 存放键值对 , 一个键对应多个值 ; 算法 : 一组用于解决常见问题的有限步骤函数 , 在容器上执行一系列算法 , 例如 : sort,find,replace ; 迭代...: 封装了一个用来 遍历容器元素 的 指针 的类 ; 通过迭代 , 可以顺序访问容器中的每个元素 , 而不改变容器中元素的位置 ; 常量时间复杂度 指的是在执行某个操作时 , 所花费的时间与输入规模无关...system("pause"); return 0; } 执行结果 : 1 2 3 4 5 6 请按任意键继续. . .

19030

c++ 迭代失效_c++迭代是什么

正向迭代,定义方法如下: 容器类名::iterator 迭代名; 常量正向迭代,定义方法如下: 容器类名::const_iterator 迭代名; 反向迭代,定义方法如下: 容器类名:...:reverse_iterator 迭代名; 常量反向迭代,定义方法如下: 容器类名::const_reverse_iterator 迭代名; 1.3 迭代的使用 通过迭代可以读取它指向的元素...通过非常量迭代还能修改其指向的元素。 迭代都可以进行++操作。...,即可向前向后跳过任意个元素 不同功能的迭代操作: 输入:++p,p++,*p ,p1 = p2,p1 == p2,p1 !...STL 中有用于操作迭代的三个函数模板,它们是: advance(p, n):使迭代 p 向前或向后移动 n 个元素。

1K40

从点滴基础探究Kotlin的独特魅力

目录 剖析方法结构 函数 变量 字符串模板 注释 自定义访问 源码布局:目录和包 表示和处理选择:枚举和"when" 迭代事物:"while"和"for"循环 异常 综上(熟悉kotlin的,可以直接跳转至综上...val PI = 3.14 var关键字允许变量改变自己的值,但它的类型却是改变不了的. var answer = 42 var answer = "HELLO" 说明:编译报错:编译只会根据初始化来推断变量的类型...,这里必须有分号 fun rgb() = (r * 256 + g) * 256 + b // 给枚举类定义一个方法 } 说明: ① 枚举常量在声明的时候,必须提供常量的属性值. ② 这个例子展示了...I/System.out: ORANGE 说明: ① java中的switch要求必须使用常量(枚举常量\字符串\数字字面值)作为分支条件. ② kotlin废弃了switch,使用when代替switch...2 , 但方向保持不变(事实上,步长被设置成了 -2) . ④ ..

2.6K30

【Example】C++ 标准库常用容器全面概述

(当前内存空间) cbegin 返回指向vector中起始位置的常量迭代。(const修饰) cend 返回末尾位置常量迭代。...begin 返回list中指向起始位置的迭代。 cbegin 返回list中起始的位置的常量迭代。(const修饰) cend 返回list中末尾的位置的常量迭代。...序列以允许查找、插入和移除任意元素的方式表示,并包含与序列中的元素数量无关的多个操作(常量时间),至少在所有存储桶长度大致相等时如此。...(在std::multimap中不提供) begin 返回一个迭代,此迭代指向Map起始位置。 cbegin 返回一个常量迭代,此常量迭代指向Map起始位置。...crbegin 返回一个常量反向迭代,此常量反向迭代指向Map起始位置。(const修饰) crend 返回一个常量反向迭代,此常量反向迭代指向Map末尾位置。

3.2K30
领券