C_and_CPP 板


LINE

※ 引述《nevak (^o^)》之铭言: : 虽然原文有点长不过听起来应该就是做参数的Cartesian product : Python有人说过了秒解XD,C++当作练习其实也满不错的 : 这应该面试也常常会考吧XD : Cartesian product最直觉就DFS走一次 : 实作上来说,看你最後是要给system()用,其实直接把参数做成string应该会单纯很多 : 如果你一开始的那些参数的列表一定要用不同型态的vector的话 : 就会有点麻烦需要用template https://glot.io/snippets/fou4l2ksnm : 如果你那些参数列表都用vector<string>来宣告的话 : 就把所有参数订在vector<vector<string>>,练习写个DFS吧 : 应该是不会需要用到tuple 为了怕初学者误解这里的程式码, 还是单独回一篇. 因为许多人学习 C++ 的管道并不是书籍, 而是网路上的文章, 再加上从 程式码范例望文生义, 最终理解就会和语言设计不同. 首先来谈谈 auto 修饰符的用法. auto 依赖使用者完全知道给定的叙述 型别为何, 不然不仅无法写出型别安全 (type safe) 的程式, 反而还造 成潜在问题 (auto 是为了型别安全而设计, 虽然也带来便利性, 但後者 不是主要目的). 如下面的例子: std::array values{1, 2, 3}; for (auto idx = 0; idx < size(values); ++idx) { ~~~~^~~~~~~~~~~~~~ error std::cout << "values[" << idx << "] = " << values[idx] << std::endl; } 为了解决这个问题 C++23 导入了 uz/z 整数後缀 [P0330], 只是标准库 先迎来了 ssize() 函式 [P1227]. auto 在源头尽可能地省下转型成本, 却导致了我们在後续使用上需小心别掉入自己的假设陷阱. 再来是 initializer list (语法) 的使用, 除了可拿来初始化阵列以及 结构物件, 加强版功能率先在 [N1509] 被提出来, 主要为支援以下两种 情境: 1. initializer list 拿来当叙述使用 (间接功能) 2. initializer list 拿来初始化容器 (主要功能) 在 C++11 以前, 初始化物件非常麻烦, 遂出现许多冗余的写法: // case #1 struct S { int a, b; }; void f(S); S s; s.a = 1; s.b = 2; f(s); // method #1, error prone f({1, 2}); // method #2, need C++11 support // case #2 int a[] = {0, 1, 2}; std::vector<int> v(a, a + 3); // method #1, error prone std::vector<int> v2 = {0, 1, 2}; // method #2, need C++11 support 最开始还只是语言支援, 後来才导入 std::initializer_list 代理物件 的概念 [N2215]帮助编译器在遇到使用 initializer list 初始化物 件时, 选用合适的建构子呼叫. 在这之後几乎所有容器都加入了接受 std::initializer_list 的多载建构子版本 [N2679]. 所以严格说起来用 auto 来接 std::initializer_list 物件并不是後者 的设计本意, 它本身不算是容器, 而是作为容器的初始化介面型别 (所 以不存在 assign()/erase() 等成员函式). 虽然这份程式码还是编译得 过, 但在 C++ 社群里几乎不会有这种非正规用法. References [P0330R8] Literal Suffixes for (signed) size_t https://wg21.link/p0330r8 [P1227R2] Signed ssize() functions, unsigned size() functions https://wg21.link/p1227r2 [N1509] Generalized Initializer Lists https://wg21.link/n1509 [N2215] Initializer lists (Rev. 3) https://wg21.link/n2215 [N2679] Initializer Lists for Standard Containers (Revision 1) https://wg21.link/n2679 -- [P1389R1] Standing Document for SG20: Guidelines for Teaching C++ to Beginners https://wg21.link/p1389r1 SG20 Education and Recommended Videos for Teaching C++ https://www.cjdb.com.au/sg20-and-videos --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.76.216 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1593636441.A.1C2.html ※ 编辑: poyenc (123.193.76.216 台湾), 07/02/2020 05:25:26
1F:→ nevak: 感谢说明,auto = {}确实是当时我偷懒的写法,希望大家别 07/02 09:53
2F:→ nevak: 在正式的code这样写。 07/02 09:53
3F:推 Dracarys: 哇 大神不睡觉的? 07/02 12:21
4F:推 Jockey66666: 已跪 07/02 23:58
5F:推 lc85301: c++23 .... 07/03 08:02
6F:推 KevinR: 推 07/05 08:17







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灯, 水草

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

TOP