[quote=引用 28 楼 cskange 的回复:] [quote=引用 27 楼 zhi_ai_yaya 的回复:] [quote=引用 26 楼 cskange 的回复:] 没有过STL和vector
[quote=引用 27 楼 zhi_ai_yaya 的回复:] [quote=引用 26 楼 cskange 的回复:] 没有过STL和vector
[quote=引用 23 楼 cskange 的回复:] [quote=引用 21 楼 zhao4zhong1 的回复:] [quote=引用 19 楼 cskange 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 12 楼 cskange 的回复:] [quote=引用 8 楼 zhao4zhong1 的回复:] 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
[quote=引用 21 楼 zhao4zhong1 的回复:] [quote=引用 19 楼 cskange 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 12 楼 cskange 的回复:] [quote=引用 8 楼 zhao4zhong1 的回复:] 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
[quote=引用 26 楼 cskange 的回复:] 没有过STL和vector
就数据结构和算法本身来说,STL提供的容器或容器的适配器,搭配STL的算法,已经非常经典,经典的意思是他在追求高效、通用、标准化、用户群方面已经极致。个人觉得没有必要自己实现。 但是另外一个方面,你必须深入理解各个容器和算法的实现方式和原理,才能在实际使用上达到最优。 举例来说: c++是值语义,STL的容器的元素的添加和删除是元素对象的复制构造,而非像其他语言如c#或java只是一个引用(指针)。如果你不注意这点,可能带来非常严重的性能问题。那么这个问题你就可以结合使用指针作为元素,以及配合的模板算法来解决。 在比如说vector在增长的时候,存储元素的内存的增长方式可能不是适合实际需求的,如果你要push_back,大量的元素,那么你应该预先地欧元vector的reserve()函数来预先构建好需要的内存,免得后续在添加元素的时候频繁申请内存。 在大元素个数或超大元素个数的场景中,往往内存分配的问题是对容器性能带来最大影响的因素。而算法之类的都是全世界通用的,优化的空间不大。 我专门写了一篇针对STL的容器的文章,lz可以参考一下: http://blog.csdn.net/truexf/article/details/17303263
[quote=引用 19 楼 cskange 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 12 楼 cskange 的回复:] [quote=引用 8 楼 zhao4zhong1 的回复:] 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
没有过STL和vector
[quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 12 楼 cskange 的回复:] [quote=引用 8 楼 zhao4zhong1 的回复:] 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
STL也不一定高效吧,STL只是通用,通用的东西不一定完全适合所有的应用场合,在这样那样的实际开发需求面前,STL做不到尽善尽美,只有适合自己的才是最好的
我告诉你一件事,STL中vector,list,depue之类的是容器,而queue,stack,priority_queue之类的是容器适配器。前者是后者的底层实现,在SGI版本的STL中,queue的实现是用deque,而stack的实现似乎也是deque。
[quote=引用 12 楼 cskange 的回复:] [quote=引用 8 楼 zhao4zhong1 的回复:] 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
[quote=引用 8 楼 zhao4zhong1 的回复:] 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
[quote=引用 10 楼 j8daxue 的回复:] stl的好处是,大家都熟知的他的接口,性能等。个人代码难以成为标准,除非是公司的基础架构部门。 另外造轮子无非自己锻炼下或者是要满足特殊需求。 最后stl中链表和队列在数据结构实现上有些不同,且stl可以搭配一些泛型算法。
64,652
社区成员
250,508
社区内容
加载中
试试用AI创作助手写篇文章吧