C_and_CPP 板


LINE

开发平台(Platform): (Ex: Win10, Linux, ...) mac 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) c17 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) null 问题(Question): 想要 new vector<int>() 之後 access vector 喂入的资料(Input): null 预期的正确结果(Expected Output): 1 错误结果(Wrong Output): 没有运算子 "=" 符合这些运算元 -- 运算元类型为: std::__::vector<int,::std::__1::allocator<int>> = int 程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档) vector<int> *v; v = new vector<int>(5); v[2] = 1; // 这里开始错 cout << v[2]; 补充说明(Supplement): 刚开始从 C 转 C++,很不习惯用已经写好的东西(不懂里面怎麽运作QQ) 1. 我在想是不是因为 vector 因为是动态的,记忆体位址跟阵列不一样,不会连续配置 所以我宣告 vector 指标之後,v[2] 就真的是 v 记忆体位置开始的第三格,而不是真正意义上 vector 资料结构的第三格 2. 这样就牵扯到 vector 内部怎麽写,所以想在请问一下 vector 内部是不是像 linked list 一样? 这样 random access 是不是需要 O(n)? 3. 另外想问一下有没有什麽资源是适合熟悉C语言,要转 C++ 的。我目前是看 cplusplus.com 里面一个一个看他的语法/机制,但内部怎麽运作还是不懂 (像是 set 我上网查才知道里面好像是用 rbtree,为何不用 graph???复杂度应该更好) 不然就是去 github 上直接看C++资料结构的code(以前都用C自己刻,所以想说直接看C++怎麽刻会学比较快) --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.171.184.16 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1599453301.A.B2D.html
1F:推 oToToT: 1.你应该误会vector怎麽用了吧,我猜你要的只是vector<int 09/07 13:01
2F:→ oToToT: > v(5),不需要用new的 09/07 13:01
我原本是写在 class 里面,初始化的时候给参数才决定 vector 大小
3F:→ oToToT: 2. vector底层实作基本上就是array,能够O(1) push_back原 09/07 13:04
那这样我为何不能 new 之後直接 access v[2] ?
4F:→ oToToT: 因则是他会自动在底层阵列满的时候自动再重新把阵列变大, 09/07 13:04
5F:→ oToToT: 但这样做复杂度均摊下来还是好的 09/07 13:04
6F:→ oToToT: (无关的部分:可以问用图存set该怎麽做吗? 09/07 13:05
不是用 union-by-rank + path compression 吗? (其实说是 graph,但其实就 tree 只是不是平常写的 tree) ※ 编辑: NTUmaki (1.171.184.16 台湾), 09/07/2020 13:14:09 啊 应该说 disjoint set啦,跟数学的 graph有点搞在一起了>< ※ 编辑: NTUmaki (1.171.184.16 台湾), 09/07/2020 13:17:03 ※ 编辑: NTUmaki (1.171.184.16 台湾), 09/07/2020 13:19:17
7F:→ james732: https://bit.ly/35gCesP 看看这篇有没有帮助? 09/07 14:10
8F:→ james732: 你需要的可能是先预留空间? 09/07 14:11
9F:推 steve1012: v是pointer to vector. 并没有告诉你会直接指到underly 09/07 15:09
10F:→ steve1012: ing data. 09/07 15:09
11F:推 moebear: 直接改写的话 你得用(*v)[2]=1; 09/07 15:12
嗯嗯 所以vector的变数名称不能跟阵列一样当成位址
12F:→ descent: 你需要 "C++ 标准库", 买一本来参考 09/07 15:24
13F:推 descent: 书上用了 11 页在说明 vector, 应该可以解除你的疑惑 09/07 15:26
14F:→ descent: 你如果是要理解内部实作, 那要找 "stl 源码剖析" 这本书 09/07 15:29
感谢!
15F:推 kaneson: 楼上 *v正解 09/07 15:54
所以vector没有预设把变数名称当位址没错吧?
16F:→ a58524andy: disjoint set没ordering吧(? 可是associative contain 09/07 16:41
17F:→ a58524andy: ners的iterator traversal要参照其key的ordering 09/07 16:41
18F:→ a58524andy: 加上标准也有指定一些复杂度限制 09/07 16:42
19F:→ a58524andy: 可能是因为这样所以常见的都用rb-tree 09/07 16:42
好的 感谢... ※ 编辑: NTUmaki (27.247.233.249 台湾), 09/07/2020 16:43:00 ※ 编辑: NTUmaki (27.247.233.249 台湾), 09/07/2020 16:43:21 ※ 编辑: NTUmaki (27.247.233.249 台湾), 09/07/2020 16:43:55 ※ 编辑: NTUmaki (27.247.233.249 台湾), 09/07/2020 16:44:21
20F:推 kaneson: v本身是pointer, 不能把它当vector去access, c的pointer 09/07 16:56
21F:→ kaneson: 可以操作 v[2] 只是语法糖,不适用vector, (*v)[2] 或 v 09/07 16:56
22F:→ kaneson: ->at(2) 才正确 09/07 16:56
了解!感谢 ※ 编辑: NTUmaki (27.247.233.249 台湾), 09/07/2020 17:41:09
23F:推 oToToT: 说实在我还是不知道要怎麽用disjoint set当作set,是我误 09/07 22:03
24F:→ oToToT: 会了甚麽吗@@,应该说这两者根本没关吧,而且disjoint set 09/07 22:04
25F:→ oToToT: 其实也是棵树 09/07 22:04
26F:推 oToToT: 我觉得正确的说法应该是v[??]後的type是vector<int>,所以 09/07 22:08
27F:→ oToToT: 你让他=2是完全没有道理的,普通的阵列int *a; a[?]的type 09/07 22:09
28F:→ oToToT: 是int,那这时候=2当然是合法的操作 09/07 22:09
29F:→ smartclever: 这...应该用个v.resize()就解决了吧... 09/11 17:51







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP