问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++ 有没有结合了数组和链表优点的容器?

发布网友 发布时间:2022-04-29 04:22

我来回答

4个回答

热心网友 时间:2023-10-11 05:52

C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。
链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。
A 从逻辑结构来看
A-1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
A-2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)
B 从内存存储来看
B-1. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
B-2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦.

热心网友 时间:2023-10-11 05:52

没有。C++的所有容器没有一样能达到这个效果:
A. Sequence Container
- basic_string
- vector
- list
- forward_list( since 11)
- deque
- array
B. associative container
- map/multimap
- set/multiset
- unordered_map/unordered_multimap( since 11)
- set同上。
其他都不叫容器,包括你可能以为是容器的stack queue any等等。
你要的容器很显然就只能是map。但是正如你所说,它的下标无法做到邻接,因为维护一次邻接需要的复杂度达到nlogn级别。
但是这样的要求真的无法实现吗?不。有一种叫做order statistic tree(名次树)的数据结构能够达到这个要求,它维护键的排名,从而可以以logn级别时间查询到第k大键所在位置,这样,如果你的键是浮点数,那么你就可以达到利用浮点数的数量多这一优点几乎完美(甚至可以认为是完美)地实现你的目的。
gcc拓展pbds(policy-based data structure)中有名次树的红黑树实现,可以使用。
最后作为题外话提醒你一下渐进记号的使用。O(f(n))本身就代表上界,没有T(n)<=O(f(n))这种说法。当然对于渐进记号的讨论超出了这个问题。详见算法导论。追问是不是把operator[x]转化成求平衡树中第x大的数(key),这个key对应的值就是要求的值。
如何求平衡树第k大数啊
名次树网上的资料太少了,只能查到它能求第k大的数
好吧现在明白了
谢谢

热心网友 时间:2023-10-11 05:52

你确定平衡树不好用?

#include <map>
using namespace std;

int main() {
map<int, int> s;
s[5] = 1;
s[6] = 2;
s[7] = 3;
s.erase(6); //删除元素
return 0;
}

热心网友 时间:2023-10-11 05:53

没有这样的现成东西

热心网友 时间:2023-10-11 05:52

C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。
链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。
A 从逻辑结构来看
A-1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
A-2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)
B 从内存存储来看
B-1. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
B-2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦.

热心网友 时间:2023-10-11 05:52

没有。C++的所有容器没有一样能达到这个效果:
A. Sequence Container
- basic_string
- vector
- list
- forward_list( since 11)
- deque
- array
B. associative container
- map/multimap
- set/multiset
- unordered_map/unordered_multimap( since 11)
- set同上。
其他都不叫容器,包括你可能以为是容器的stack queue any等等。
你要的容器很显然就只能是map。但是正如你所说,它的下标无法做到邻接,因为维护一次邻接需要的复杂度达到nlogn级别。
但是这样的要求真的无法实现吗?不。有一种叫做order statistic tree(名次树)的数据结构能够达到这个要求,它维护键的排名,从而可以以logn级别时间查询到第k大键所在位置,这样,如果你的键是浮点数,那么你就可以达到利用浮点数的数量多这一优点几乎完美(甚至可以认为是完美)地实现你的目的。
gcc拓展pbds(policy-based data structure)中有名次树的红黑树实现,可以使用。
最后作为题外话提醒你一下渐进记号的使用。O(f(n))本身就代表上界,没有T(n)<=O(f(n))这种说法。当然对于渐进记号的讨论超出了这个问题。详见算法导论。追问是不是把operator[x]转化成求平衡树中第x大的数(key),这个key对应的值就是要求的值。
如何求平衡树第k大数啊
名次树网上的资料太少了,只能查到它能求第k大的数
好吧现在明白了
谢谢

热心网友 时间:2023-10-11 05:53

你确定平衡树不好用?

#include <map>
using namespace std;

int main() {
map<int, int> s;
s[5] = 1;
s[6] = 2;
s[7] = 3;
s.erase(6); //删除元素
return 0;
}

热心网友 时间:2023-10-11 05:53

没有这样的现成东西
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
好玩的网游排名前十名 最简单的网游有哪些 ...风景模式、微距模式和夜晚风景模式的设置特点 鹰的重生的作品目录 记忆重构黄色轮盘密码锁密码是什么 解锁方法介绍 性感甜心轮盘游戏介绍 ...锁屏圆形壁纸教程介绍_抖音时间锁屏圆形壁纸教程是什么 时间轮盘姓氏怎么设置介绍_时间轮盘姓氏怎么设置是什么 家常牛排好吃又嫩的做法 怎样做家常牛排好吃又嫩 352口腔综合有哪些 猜猜他是谁作文写男生的 C++版数据结构解决A=AUB hashmap怎么解决哈希冲突 java8 中concurrenthashmap数据结构和HashMap一样,且线程安全 为什么还要... c语言学到哪个程度可以看数据结构? 为什么像map,set都用红黑树来实现 map底层由数组和链表 怎么理解 链表分为双向和单向 又怎么理解_百度知 ... 2020-04-06:为什么HashMap不一直使用红黑树? hash table 和 red black tree有什么不同点 mysql中的红黑树会变回链表么 linux内核数据结构链表队列哈希映射红黑树有什么用 为什么HashMap使用红黑树而不使用AVL树? concurrenthashmap中判断是链表还是红黑树 WINDOWS自带的视频编辑工具在哪个文件夹 hashmap链表大于多少后成为红黑树 怎么用系统自带的剪切视频软件 windows剪辑视频的软件 周公解梦梦见老公有外遇我自残流血 梦见丈夫有外遇,还和对方生了一个男孩 梦见老公出轨 懂周公解梦的高人进来 科比的手指,泰森的脖子,C罗的脚,看看成功有多不易? DELL电脑开机时总是需要F1引导启动,如何解决? 我的戴尔笔记本电脑为什么每次开机都要按F1 戴尔笔记本电脑为什么每次开机都要按F1 戴尔电脑开机显示要按f1 戴尔电脑每次启动提示都要按f1? 戴尔服务器( R720 )开机提示F1 F2问题怎么解决? win10 屏幕录制 存在哪个 女汉子撩汉的QQ聊天记录截图曝光 被虐得不要不要的 电信营业厅为什么微信充不了话费 滑县天域网络科技有限公司怎么样? 滑县哪里可以做网站? 我想做一个滑县律师的网站,采用什么样的程序容易SEO和推广。什么样的关键词最合适啊。 跑步对脸上的痤疮有好处吗? 滑县风物滑州文化传媒有限公司怎么样? 跑步对痤疮有什么好处 在安阳滑县做一个企业官方网站建设需要多少钱? 我16岁了 跑步对脸上的痤疮 青春痘有好处吗 跑步出汗对玫瑰痤疮有好处吗 滑县中道文化传媒有限公司怎么样? 做运动,出汗.能不能使痤疮好转?