您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x对Vector<Node*>排序

2015-10-07 00:24 369 查看
很简单,代码如下:

// getMillis() 的签名必须为 uint64_t getDay() const {xxx},另外 less 已经被占用!
bool funcLess(const Photo* photo0, const Photo* photo1) {
return photo0->getDay() < photo1->getDay();
}
void sortPhotos(Vector<Photo*>& vecPhoto) {
std::sort(std::begin(vecPhoto), std::end(vecPhoto), funcLess);
}

2015.1007.1213

今天查了一下资料,了解到了要在 getDay() 后加 const 的原因:
因为 funcLess 的参数列表中 const Photo* photo0,表示此函数不能修改 photo0 这个对象,
虽然 funcLess 中并没有修改 photo0 对象的操作,但 photo0 调用了自己的成员方法 getDay(),
谁知道 getDay() 成员方法中 photo0 有没有修改自身呢?所以才有了 getDay() 后面要加 const 一说,
加上 const 表示成员函数 getDay() 保证不会修改自身!然而这对于 int getDay() 有什么意义呢,调用者只有接收 int 返回值的份啊?
要考虑到编译器并没有那么智能,int getDay() 和 void setDay(int) 对于编译器而言都是一样的,
它没那么智能去识别如果只是返回 int 的话,外界无从修改 photo0 这个对象,更何况谁能保证 photo0 中没有 “内鬼” 呢?
对于 bool funcLess(const Photo* photo0) 和 int getDay() const 的瓜葛,总算是有着落了!

--EOF--
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: