duangsuse::Echo
还有个简单一点的习惯问题,就是这么多 if 嵌套看的时候是要死人的啊!(何况我一看,这些 if 除了条件执行外没有任何的 else...) 利用控制流预先 return / continue / break 了更好
此外,用
for (const auto& node : childs) 不是更有意义一些,为什么到处用 i j ret tmp 这些毫无意义的名字啊... i 在是数值的时候还是可以用的,YAML::Node i; 这是不是混淆了...This media is not supported in your browser
VIEW IN TELEGRAM
我不能继续下去了,虽然可能有意义... 一些建议我发给 YSC 算
同时,我这里也没有 VC++ 的 SDK 和 Windows 测试环境,不能编译测试我心虚
同时,我这里也没有 VC++ 的 SDK 和 Windows 测试环境,不能编译测试我心虚
duangsuse::Echo
很辣鸡,可是我果然还是变得 很慢了吧...
duangsuse::Echo
这程序等价么 #CXX
b+1 > a
(a,b in N) => b >= a
是这么考虑的:+ 若 b-a = 1 (b = a+1; b+1>a)
+ 若 b-a = 0(b=a; b+1 > a)
+ 若 b-a = 2 (b = a+2; b > a)
+ b-a = -1 (b < a; b+1 = a; b+1 = a) 🤔???
Forwarded from dnaugsuz
可以 type safe 的,指针损失了长度信息,类似 void* vs. std::array
Forwarded from dnaugsuz
现在看了也头疼,尤其是那个也是曾经我自己写的 get_char(usize idx)... 算了
真的想打印下来好好看...
突然懂了,其实就是不断递交给父层取 item 的递归子程序,一点计算都没有,真垃圾啊....
看懂了,就是 C++ 的 iterator 和递归函数
真的想打印下来好好看...
突然懂了,其实就是不断递交给父层取 item 的递归子程序,一点计算都没有,真垃圾啊....
if (idx >= this->size()) return '\00'; 这条语句不 sound,明明知道是超出索引(甚至 i > len+1)还给 '\00'....看懂了,就是 C++ 的 iterator 和递归函数
void copy_to_recurse(char *&beg/*mut*/, char *end) {
if (this.head !=nullptr) this.head.copy_to_recurse(stm);
usize sziter = end - beg;
usize szcopy = min(len, sziter); // intersection
memcpy(beg, this.str, szcopy);
beg += szcopy;
}This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from 羽毛的小白板
qnmd Electron 和 Chromium。退出 Slack 后系统内存占用立马减少 7GB
Forwarded from dnaugsuz
补充一下,对于这种头疼的情况 也有部分程序员这么写:
程序的控制结构本身是很灵活的,可以推导出许多不同情况
auto a = malloc(1);
if (a ISNULL) { goto exit; }
else {
auto b = malloc(2);
if (b ISNULL) { goto free_a; }
else {
///...
goto free_b
}
}
free_b: free(b)
free_a: free(a)
exit: return; 程序的控制结构本身是很灵活的,可以推导出许多不同情况
Forwarded from dnaugsuz
🤔 RAII (Resource Accquiring Is Initialization) 不是资源惰性加载嘛... 它还能自动提供 finializer?
duangsuse::Echo
这程序等价么 #CXX
感谢 Yuuta 群友 @ysc3989 回答:不等价
我误解了,这个 string 是动态增长的,
修正:
1. 把 pathsize, actualsize 提升到 for 的前面
2. 在 for 里面重复两遍... 当然也可以用 do while + break
这个是真没办法,不过可以用预处理宏或者 lambda
如果不用某些函数式的 operator 的话真的很麻烦啊... while 的话初始化要重复、do while 的话 predicate 要重复、用 goto 现在又不推荐使用
我误解了,这个 string 是动态增长的,
str.data() 是 iterator begin...修正:
1. 把 pathsize, actualsize 提升到 for 的前面
2. 在 for 里面重复两遍... 当然也可以用 do while + break
这个是真没办法,不过可以用预处理宏或者 lambda
如果不用某些函数式的 operator 的话真的很麻烦啊... while 的话初始化要重复、do while 的话 predicate 要重复、用 goto 现在又不推荐使用