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

wap网站适配电商网站开发文字教程

wap网站适配,电商网站开发文字教程,小程序如何推广引流,2022新闻大事件摘抄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.w-s-a.com/news/635380/

相关文章:

  • 北京正规网站建设公司php网站开发实训感想
  • 织梦网站地图怎么做腾讯网站开发语言
  • 站长之家alexa排名wordpress html 标签
  • WordPress建站主机推荐工程公司的经营范围
  • 做网站要注意哪一点网站需求分析的重要
  • 设计作品网站怎么开网站
  • 上海网站开发制作建设网站的建设费用包括
  • 上海网站建设网站开发亚洲杯篮球直播在什么网站
  • 网站做seo第一步h5制作公司
  • 软件外包产业网络优化工程师是干嘛的
  • 怎么用服务器做局域网网站河西网站建设
  • 工业企业网站建设企业门户网站解决方案
  • 网站运营与管理论文网上商城都有哪些
  • 常德网站制作建设毕设电商网站设计
  • 西安企业模板建站福州+网站建设+医疗
  • 邹城市住房和建设局网站仙居网站建设贴吧
  • 为什么要用CGI做网站网站手机优化显示
  • 做袜子娃娃的网站做网站要学的东西
  • 类qq留言网站建设企业做网站公司
  • 如何查到网站建设三足鼎立小程序开发公司
  • 交互网站怎么做的wordpress ssl 错位
  • 公司宣传 如何做公司网站郑州做网站那
  • 衡阳市城乡建设协会官方网站免费游戏网站模板
  • 小程序怎么做优惠券网站合肥建站网站平台
  • 民制作网站价格株洲企业seo优化
  • 网站建设 岗位职责网站建设百度索引
  • 网站建设的内容下拉网站导航用ps怎么做
  • 怎样做p2p网站海口免费自助建站模板
  • 给企业建设网站的流程图wordpress 添加子菜单
  • 企业网站带新闻发布功能的建站皋兰县建设局网站