首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    动态数组和C++ std::vector详解

    1. std::vector std::vector是C++的默认动态数组,其与array最大的区别在于vector的数组是动态的,即其大小可以在运行时更改。...std::vector是封装动态数组的顺序容器,且该容器中元素的存取是连续的。 vector的存储是自动管理,不需要人为操作自动实现按需扩张收缩。...但实现自动管理的代价就是:vector通常占用多于静态数组的空间,因为其需要更多的内存以管理将来的增长。vector在分配内存的时候是先分配一定数量的内存,然后在内存耗尽时再重新申请分配。...const std::vector& rhs ); //C++20 起 1,2中会检查lhs和rhs的内容是相等,即他们是否拥有相同数量的元素且lhs中每个元素与rhs的相同位置元素比较相等...::swap(std::vector) std::swap(std::vector)函数是为std::vector特化std::swap 算法。

    1.5K10

    从 C++ STD::VECTOR的RESIZE和RESERVE看VECTOR的源码实现

    永远是3*8=24。跟扩容没关系 capacity是指针 已经分配一片连续空间。...与size()已经初始化的空间 1. vector 特点 是连续空间 啥意思 提前已经分配好内存了(M_start,_M_end_of_storage)。就能解释下吗2个概念。...很多初学者分不清楚 vector 容器的容量(capacity)和大小(size)之间的区别,甚至有人认为它们表达的是一个意思 混淆地方。...可分配空间是vector之外的 思考60秒:vector(10,0) 执行过程 vector(10,0) 执行过程 a 执行_Vector_base构造函数 b 初始化size(10),调用对应构造函数...在构造时候已经预先分配 size_type capacity() const { return size_type(_M_end_of_storage - begin()); } std

    2.7K10

    C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比

    C++ 中 std::array 与 std::vector 的深入对比 在 C++ 标准库中,std::array 和 std::vector 是两种常用的容器...一、内存管理 std::array 静态内存分配:std::array 使用的是静态内存分配,其大小在编译时就已确定。数组的大小是固定的,不能在运行时改变。...栈上分配:std::array 的内存是在栈上分配的,这意味着它不涉及动态内存分配和复制操作,减少了内存管理的复杂性。...std::vector 动态内存分配:std::vector 使用动态内存分配,可以根据需要动态调整其大小。...std::vector 丰富的成员函数:std::vector 提供了丰富的接口,支持动态大小调整、插入、删除元素等操作。

    1K20

    别再简单地问「std::vector 和 std::list 可以组合使用吗」:这是对 STL 设计哲学的误解

    一、前言 在 C++ 学习与实践的过程中,你可能听过或者问过这样一个问题: “std::vector 和 std::list 可以组合使用吗?” 表面上,这似乎是一个简单的问题。...二、什么是“组合” 当我们说“组合”时,可能有三种完全不同的理解层次: 层次 示例 说明 语法层面 std::vectorstd::list> 一种嵌套使用的容器定义。...容器组合带来了一些额外的语义复杂性: 内存布局不同步 std::vector 的元素是连续存储的; 而每个 std::list 自身是一组分散节点。...什么时候使用容器嵌套? 有三种常见合理场景: 二维数据结构 例如:std::vectorstd::vector> matrix。 适合固定结构的矩阵、图、表格等。...七、总结 回到最初的问题: “std::vector 和 std::list 可以组合使用吗?” 答案当然是:可以。 但真正有意义的回答是:这不是问题的关键。

    18010

    《C++ 中用 std::vector 打造动态增长二维数组:技巧与应用全解》

    std::vector 的基本特性与优势 std::vector 是 C++ 标准模板库(STL)中的一个容器类。它具有很多优秀的特性,使得它非常适合用来构建动态数据结构。...构建动态增长二维数组的思路 要使用 std::vector 创建动态增长的二维数组,我们可以把二维数组看作是一个包含多个 std::vector 的 std::vector 。...首先,由于二维数组是通过多个 std::vector 嵌套实现的,在访问元素时要确保索引的合法性,避免越界访问。...由于 std::vector 是一个模板类,参数传递可能会涉及到模板的类型推导等复杂问题。我们需要确保函数能够正确地接收和处理动态二维数组。...总之,使用 std::vector 实现动态增长的二维数组是 C++ 编程中的一个非常实用的技巧。它为我们在处理动态二维数据时提供了很大的灵活性和方便性。

    1K10

    1.vector容器是什么?可能是全网最好的教程

    引入头文件 在使用vector之前需要用#include vector>来引入头文件。 如果你是竞赛选手,也可以用万能头#include 其中包含了vector>。...vector简介 vector可以理解为动态数组,它的大小会随着元素的增加而自动增大。下标从0开始,大小为n的vector的可用范围是[0, n - 1]。...遍历数组 既然是数组肯定少不了遍历嘛对吧~ 思路是,先用v.size()获取vector的大小,然后用for循环遍历。...vector排序 给vector排序,需要先引入头文件: #include using namespace std; int main() { vector...所以如果你的vector大小或者范围已知,所以建议在初始化的时候就规定好大小。比如初始化的时候用vector v(n),但是注意此时size()已经是n了。

    51830

    C++の容器vector

    那么,什么是vector呢?简单来讲,它就是一个可以用来装东西的容器。我们首先来看一下怎么用vector这个类吧。...vector为什么是容器呢?因为它能装其他的对象,这有点像数组,但是远比数组强大。vector基本可以装所有类型的对象,而数组大多数情况下只能存数字或字符。...return 0; } 既然,vector是用来存对象的,那么我们怎么来访问它里面存储的对象呢?...关于什么是迭代器,我们下面来说。 vector中有迭代器的概念,基本所有集合类都有。那么迭代器是什么呢?...如果你对这篇文章有什么疑问,欢迎评论区留言,我会一一解答,如果有什么错误之处,还请指正。下篇文章,我们简单说一下array。

    94720
    领券