- 主题:size_t和int比较时哪种写法效率更高?
C++里面,size_t是很多容器和函数的默认参数和返回值,根本无法避免。
【 在 hyperLee (老李) 的大作中提到: 】
: 接口中不要用size_t,其他的还好。
: 不过能用int就用int,size_t长度变化有时候(大多数时候)非常不好。
--
FROM 124.207.9.*
【 在 libgcc (承接各种水军业务) 的大作中提到: 】
: std::vector sss = .....
: for(int i=0; i<ss.size()-1; ++i)
: ss是空的时候就很二逼了...
: ...................
--
FROM 124.207.9.*
直接看汇编码,后者的汇编会少一个指令。
【 在 jsznzsj (jsznzsj) 的大作中提到: 】
: int n;
: vector<double> vec;
: 是 (size_t)n < vec.size() 还是 n < (int)vec.size() 效率高?假设64位程序。
: ...................
--
FROM 124.207.9.*
所以直接上 qt 呀
【 在 jsznzsj (jsznzsj) 的大作中提到: 】
: C++里面,size_t是很多容器和函数的默认参数和返回值,根本无法避免。
--
FROM 221.219.211.*
主要是写出来的会很不优雅。以刚才的为例
for(i=0; i<ss.size(); ++i){}
是一个比较常见的写法吧。但是倒序
for(i=ss.size(); i>=0; --i)如果i在前文定义size_t或者这里auto定义,就虾米了
【 在 z16166 (Netguy) 的大作中提到: 】
: 这锅为啥要让size_t来背
: 特殊情况、边界情况,本身就需要码农自己注意
--
FROM 1.203.173.*
【 在 mountainlion 的大作中提到: 】
: 主要是写出来的会很不优雅。以刚才的为例
: for(i=0; i<ss.size(); ++i){}
: 是一个比较常见的写法吧。但是倒序
: ...................
常见写法不是用iterator或者for(auto& a : container)吗? 只有明确需要对index做操作才会需要老式for循环吧?
--
FROM 222.126.214.*
虽然并不是唯一的用法,但这种情况并不能说少见。当然这个话题主要是针对uint的,在某一个边界附近操作的几率大大增加了,用起来确实别扭
【 在 hongdiao (hongdiao) 的大作中提到: 】
: 常见写法不是用iterator或者for(auto& a : container)吗? 只有明确需要对index做操作才会需要老式for循环吧?
--
FROM 1.203.173.*
为了解决一个问题,引入了一个更大的问题~
【 在 iwantfly (雷雷) 的大作中提到: 】
: 所以直接上 qt 呀
--
FROM 124.207.9.*
著名的二分法查找bug,了解一下。结合编程珠玑看,挺有意思
【 在 hgoldfish 的大作中提到: 】:
会有人往 vector/linked_list 里面写超过 2^32 数量的元素?
※ 来源:·
https://exp.newsmth.net·[FROM: 223.104.3.*]
FROM 223.104.3.*
尽量避免裸写for循环,上/下边界处很容易出问题。
用ranged for或者std::for_each,需要倒序遍历的用rbegin()/rend()封一个适配器
https://www.fluentcpp.com/2020/02/11/reverse-for-loops-in-cpp/
https://stackoverflow.com/questions/8542591/c11-reverse-range-based-for-loop
【 在 mountainlion 的大作中提到: 】
: 主要是写出来的会很不优雅。以刚才的为例
: for(i=0; i<ss.size(); ++i){}
: 是一个比较常见的写法吧。但是倒序
: ...................
--
修改:z16166 FROM 123.115.131.*
FROM 123.115.131.*