C++中常见的几种容器类(vector,list,map,set)和数据库的比较

时间:2022-03-14 16:21:23
C++中常见的几种容器类(vector,list,map,set)和数据库的比较
什么情况下使用数据库比较好,什么情况下使用SET或结构链表就够了。比如数据在1M以
上就必须使用数据库还是数据无论多少都可以用List保存数据而运行效率不减。

实在想不出来:(

11 个解决方案

#1


这根本没有可比性。
数据库是存在硬盘上的,而容器是内存中的数据结构。

#2


程序运行的时候,数据库中的数据也会调入内存把.

#3


1M还是可以放在内存中的。

但楼主做这样的比较似乎意义不大,采用数据库系统来存储数据绝不是仅仅因为数据量的大小。如果仅仅是数据量,那采用文件和可以。

首先,vector,list……这些东西都是程序中的,一关机就没了,如果要长期保存,还得靠文件或数据库,所以,这一点上,二者就没有什么可比性。通常,容器类只是程序中需要的,我们经常需要把数据从数据库或文件中读出来,保存到容器类当中。

第二,数据库系统的功能也决不仅限于存数,数据库系统通常有强大的备份、恢复、事务处理、日志、安全性等功能;数据表示上也存在者表、视图等灵活的方式;可以利于主键、外键、约束、默认值等机制提供保证数据的完整性,靠建立索引等方式来提高访问效率,还有专门的SQL语言来进行各种数据查询和处理,这些岂是容器类能比得?

#4


应该是在什么情况下使用他们时
在速度上(或时间、空间)上会优于数据库连接。
主要是比较程序的运行效率把.

其实我就是想问什么时候使用数据库,什么情况下使用容器类就够了

#5


要说效率,肯定是访问内存中的快,因为访问数据库难免涉及I/O操作,I/O读写的速度和内存读写的速度有数量级的差别。

#6


to steedhorse(晨星):
你说的很有道理,我想请教,凭你的经验,
什么情况下使用数据库,什么情况下使用容器类就够了

#7


我觉得楼上的兄弟们说的很对(不要说我是跟屁虫呀),从历史上看来,数据库技术就是文件存储的一个革命。数据库部分是为了解决文件存储的一些不足而发展出来的。其他一些内存的存储结构你想怎么样用就怎么用,比如,你把数据库中的记录值取到,存储到list中。

#8


To:uniquebaby(唯一)
你的意思是想问通过内存里的容器类来保存数据还是通过数据库来保存程序中的数据吗?
还是觉得你的提法有些问题,不过姑且怎么说说吧,我觉得容器类永远都有必要使用,那是程序设计的基础,不使用任何容器类(包括库类和程序员自己设计的容器类)的程序肯定是非常简单的程序。
但数据库未必需要。如果数据不需要永久保存,也就是说,程序退出就没了;数据量不是很大;数据之间的关系比较简单,不必用几十甚至几百张表来描述这种关系,那就可以不用数据库啊,并不是每个程序都需要数据库支持的。

#9


mark

#10


谢谢steedhorse(晨星) .
我基本上明白了,但是我觉得我的提法没问题呀;)
我问的就是什么情况下,程序不必使用数据库,容器就足够了,什么情况了必须考虑数据库.
你的回答我很满意;)谢谢.

#11


up

#1


这根本没有可比性。
数据库是存在硬盘上的,而容器是内存中的数据结构。

#2


程序运行的时候,数据库中的数据也会调入内存把.

#3


1M还是可以放在内存中的。

但楼主做这样的比较似乎意义不大,采用数据库系统来存储数据绝不是仅仅因为数据量的大小。如果仅仅是数据量,那采用文件和可以。

首先,vector,list……这些东西都是程序中的,一关机就没了,如果要长期保存,还得靠文件或数据库,所以,这一点上,二者就没有什么可比性。通常,容器类只是程序中需要的,我们经常需要把数据从数据库或文件中读出来,保存到容器类当中。

第二,数据库系统的功能也决不仅限于存数,数据库系统通常有强大的备份、恢复、事务处理、日志、安全性等功能;数据表示上也存在者表、视图等灵活的方式;可以利于主键、外键、约束、默认值等机制提供保证数据的完整性,靠建立索引等方式来提高访问效率,还有专门的SQL语言来进行各种数据查询和处理,这些岂是容器类能比得?

#4


应该是在什么情况下使用他们时
在速度上(或时间、空间)上会优于数据库连接。
主要是比较程序的运行效率把.

其实我就是想问什么时候使用数据库,什么情况下使用容器类就够了

#5


要说效率,肯定是访问内存中的快,因为访问数据库难免涉及I/O操作,I/O读写的速度和内存读写的速度有数量级的差别。

#6


to steedhorse(晨星):
你说的很有道理,我想请教,凭你的经验,
什么情况下使用数据库,什么情况下使用容器类就够了

#7


我觉得楼上的兄弟们说的很对(不要说我是跟屁虫呀),从历史上看来,数据库技术就是文件存储的一个革命。数据库部分是为了解决文件存储的一些不足而发展出来的。其他一些内存的存储结构你想怎么样用就怎么用,比如,你把数据库中的记录值取到,存储到list中。

#8


To:uniquebaby(唯一)
你的意思是想问通过内存里的容器类来保存数据还是通过数据库来保存程序中的数据吗?
还是觉得你的提法有些问题,不过姑且怎么说说吧,我觉得容器类永远都有必要使用,那是程序设计的基础,不使用任何容器类(包括库类和程序员自己设计的容器类)的程序肯定是非常简单的程序。
但数据库未必需要。如果数据不需要永久保存,也就是说,程序退出就没了;数据量不是很大;数据之间的关系比较简单,不必用几十甚至几百张表来描述这种关系,那就可以不用数据库啊,并不是每个程序都需要数据库支持的。

#9


mark

#10


谢谢steedhorse(晨星) .
我基本上明白了,但是我觉得我的提法没问题呀;)
我问的就是什么情况下,程序不必使用数据库,容器就足够了,什么情况了必须考虑数据库.
你的回答我很满意;)谢谢.

#11


up