当前位置: 首页 > news >正文

织梦新手网站建设建筑工程公司资质

织梦新手网站建设,建筑工程公司资质,js网站源码下载,wordpress分类目录顺序C笔记之动态数组的申请和手动实现一个简单的vector code review! 文章目录 C笔记之动态数组的申请和手动实现一个简单的vector1.C语言中动态数组的申请与使用1.动态数组的申请使用new和delete使用std::vector 1.std::vector的底层实现2.手动实现一个简单的vector:使用一个指向…C笔记之动态数组的申请和手动实现一个简单的vector code review! 文章目录 C笔记之动态数组的申请和手动实现一个简单的vector1.C语言中动态数组的申请与使用1.动态数组的申请使用new和delete使用std::vector 1.std::vector的底层实现2.手动实现一个简单的vector:使用一个指向动态分配的数组的指针来存储元素模拟vector的基本行为 1.C语言中动态数组的申请与使用 在C语言中可以使用malloc函数来动态申请内存以创建动态数组并使用free函数来释放这些内存。以下是在C语言中创建和使用动态数组的基本示例 代码 #include stdio.h #include stdlib.hint main() {int size;printf(Enter the size of the dynamic array: );scanf(%d, size);// 使用malloc函数分配动态数组内存int *dynamicArray (int *)malloc(size * sizeof(int));// 检查内存分配是否成功if (dynamicArray NULL) {printf(Memory allocation failed.\n);return 1; // 返回错误码}// 初始化动态数组的元素for (int i 0; i size; i) {dynamicArray[i] i * 2;}// 访问和使用动态数组的元素for (int i 0; i size; i) {printf(%d , dynamicArray[i]);}// 释放动态数组内存free(dynamicArray);return 0; }在上述示例中首先使用malloc函数分配了一块内存该内存可以存储size个int类型的元素。然后通过循环初始化和使用动态数组的元素。最后使用free函数释放分配的内存以防止内存泄漏。 请注意使用malloc和free来管理内存需要特别小心确保在不再需要动态数组时释放内存以免出现内存泄漏。此外动态数组的内存大小必须在运行时明确定义并且需要手动处理分配和释放内存这可能会引入错误因此要特别小心。如果可能的话推荐使用C中的std::vector或C语言的动态数组分配方式如alloca或strdup以减少手动内存管理的复杂性。 1.动态数组的申请 在C中可以使用new运算符来动态申请数组并使用delete运算符来释放它们。此外C11引入了std::vector它是一个动态数组的封装提供了更方便和安全的方法来管理动态数组。下面分别介绍使用new和std::vector的方法来创建和使用动态数组。 使用new和delete 代码 #include iostreamint main() {int size;std::cout Enter the size of the dynamic array: ;std::cin size;// 通过new运算符分配动态数组int* dynamicArray new int[size];// 初始化动态数组的元素for (int i 0; i size; i) {dynamicArray[i] i * 2;}// 访问和使用动态数组的元素for (int i 0; i size; i) {std::cout dynamicArray[i] ;}// 释放动态数组内存delete[] dynamicArray;return 0; }使用new分配动态数组后不要忘记使用delete[]释放内存以防止内存泄漏。 使用std::vector 使用std::vector可以更方便地管理动态数组无需手动分配和释放内存 #include iostream #include vectorint main() {int size;std::cout Enter the size of the dynamic array: ;std::cin size;// 使用std::vector创建动态数组std::vectorint dynamicArray(size);// 初始化动态数组的元素for (int i 0; i size; i) {dynamicArray[i] i * 2;}// 访问和使用动态数组的元素for (int i 0; i size; i) {std::cout dynamicArray[i] ;}return 0; }std::vector会自动处理内存分配和释放使得代码更加安全和易维护。 无论您选择使用new和delete还是std::vector都要确保正确管理动态数组的内存以防止内存泄漏和访问越界错误。 1.std::vector的底层实现 C中的vector是标准库中的一个动态数组容器它提供了动态大小的数组类似于C数组但它具有自动管理内存的功能可以动态增加或减少数组的大小。vector的底层实现通常是使用动态分配的数组以及一些成员函数来管理这个数组的大小和元素。 下面是vector的一些常见底层实现细节 动态分配的数组vector内部通常使用一个指向动态分配的数组的指针来存储元素。这个数组的大小可以根据vector中存储的元素数量动态调整。当元素数量超过当前数组的容量时vector会分配一个更大的数组将元素从旧数组复制到新数组然后释放旧数组。 容量Capacity和大小Sizevector有两个重要的属性容量和大小。容量表示当前数组的大小而大小表示vector中实际存储的元素数量。容量通常大于或等于大小因为vector可能会提前分配一些额外的空间以减少频繁重新分配内存的开销。 动态调整容量当vector的大小超过容量时它会重新分配更大的内存块并将元素从旧数组复制到新数组。这通常涉及到内存分配和复制操作这可能会导致性能开销。为了减小重新分配的频率vector通常会分配比当前大小更多的额外空间以避免在每次插入元素时都重新分配内存。 内存管理vector负责动态内存的分配和释放以确保内存的正确管理。当vector不再需要某个内存块时它会调用delete[]或allocator::deallocate来释放内存。 迭代器vector提供了迭代器用于访问容器中的元素。迭代器是指向容器中元素的指针或对象允许你遍历vector的内容。 总之vector的底层实现是基于动态分配的数组它使用内部指针来管理内存并提供了各种方法来操作容器中的元素包括插入、删除、访问等。这些实现细节在C标准库中是隐藏的因此你可以方便地使用vector而无需担心底层实现的细节。 2.手动实现一个简单的vector:使用一个指向动态分配的数组的指针来存储元素模拟vector的基本行为 运行 代码 #include iostreamclass MyVector { public:MyVector() : data(nullptr), size(0), capacity(0) {}void push_back(int value) {if (size capacity) {// 如果当前大小超过容量需要重新分配更大的内存int new_capacity (capacity 0) ? 1 : capacity * 2;int* new_data new int[new_capacity];// 将数据从旧数组复制到新数组for (int i 0; i size; i) {new_data[i] data[i];}// 释放旧数组的内存delete[] data;// 更新指针和容量data new_data;capacity new_capacity;}// 在数组末尾添加新元素data[size] value;size;}int at(int index) {if (index 0 index size) {return data[index];} else {std::cerr Index out of range! std::endl;return -1;}}int getSize() {return size;}~MyVector() {delete[] data; // 释放动态分配的内存}private:int* data; // 指向动态分配的数组的指针int size; // 当前元素数量int capacity; // 当前容量 };int main() {MyVector vec;// 向自定义的vector中添加一些元素for (int i 1; i 10; i) {vec.push_back(i * 10);}// 访问元素并打印for (int i 0; i vec.getSize(); i) {std::cout Element at index i : vec.at(i) std::endl;}return 0; }
http://www.zqtcl.cn/news/279294/

相关文章:

  • 自己做网站需要多少费用asa8.4 做网站映射
  • 商业网站 模板黑龙江省建设厅安全员考试
  • 网站新备案不能访问室内装修网站模板
  • 工程师报考网站wordpress设置视频图片不显示图片
  • 徐州网站建设公司排名成都住建平台
  • 用来备案企业网站国外免费外贸网站
  • 网页背景做的比较好的网站做一个企业网站价格
  • 免费制图网站县级门户网站建设的报告
  • 北京网站建设网怎么用手机做一个网站
  • 网站建设管理办法关于公司门户网站建设的议案
  • 网站开发入职转正申请书体验好的网站
  • 在线精品课程网站开发网站备案号怎么修改
  • 网站建设 风险百度热搜的含义
  • 怎样创作网站公司做网站 要准备哪些素材
  • 网站上的平面海报怎么做南阳企业做网站
  • 佛山公众平台网站推广多少钱wordpress如何调用分类目录
  • 网站推广应该注意什么信息发布平台推广
  • 官方网站案例做网站私活在哪接
  • 做网站滨州wordpress 不同域名
  • 找人做设计的网站广州做网站(信科网络)
  • 如何选择网站做站方向青之峰网站建设
  • 福州哪家网站制作设计高端还实惠设计logo的理念
  • 吉林市网站建设促销式软文案例
  • 三门峡市建设局网站网站开发费用是否资本化
  • 建设部网站官网 施工许可杭州萧山网站开发
  • 福建省建设资格注册管理中心网站竹子建站怎么样
  • 想做一个什么样的网站网站建设功能评价指标
  • 网站建设渠道合作友情链接是免费的吗
  • wordpress如何制作网站网站建设及推广方案ppt
  • 关于建设门户网站的通知重庆刮刮卡制作