Posts

【C++ STL应用与实现】64: 如何使用shuffle和random_shuffle : 洗牌 (since C++11)

24 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 #前言 本文介绍了STL中的变序类算法(mutating algorithm)里面的洗牌算法:std::random_shuffle和std::shuffle. random_shuffle算法在C++11之前就已经存在,C++11之后由于右值引用的引入,它的使用范围变大了。 shuffle算法则是从C++11之后才开始出现,可以与随机数和分布库一起使用。 与本系列的其他文章一样,本文介绍该最新的使用方法,比如random_shuffle在C++11以后接收的第三个参数从左值引用改成了右值引用,使得能够传入临时对象和函数,也就是说其使用范围括大了。 ...

阅读全文 ...


【C++ STL应用与实现】5: 如何使用std::array (since C++11)

23 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 #前言 本文总结了STL中的序列式容器array的用法及注意事项。array的出现代表着C++的代码更进一步“现代化”,就像std::string的出现代替了c风格字符串并且能和STL配合工作一样,array的出现则将取代语言内置的数组以及c风格的数组字符串,它提供了data()接口,使得能够获得内部数组的首地址,它提供了size(), 能够得其固定的长度,使得C++的数组也可以像Java等语言那样知道自己的length;它提供了begin(), end()等接口使得“数组”也可以和STL血脉相容;它还提供了tuple接口,可以当做tuple来使用;更重要的一点是,array有并不比原生数组差的性能表现。 ...

阅读全文 ...


【C++ STL应用与实现】26: 如何使用std::for_each以及基于范围的for循环 (since C++11)

22 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 #前言 本文总结了STL算法中for_each, for_each算法很常用,以致于C++11定义了一个新的语法: range based for loop, 也就是基于范围的for循环,直接在语法层面把for_each的功能给实现了。本文给出一些使用for_each和rang-based for loops的用法,并说明for loops的实现原理和使用注意事项。

for_each的原型

template<class InputIterator, class Function>
  Function for_each(InputIterator first, InputIterator last, Function fn)
{
  while (first!=last) {
    fn (*first);
    ++first;
  }
  return fn;      // or, since C++11: return move(fn);
}
...

阅读全文 ...


【C++ STL应用与实现】23: 如何使用std::mem_fn (since C++11)

21 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 #前言 本文总结了STL中函数适配器:mem_fn系列函数的用法,它们是:mem_fun (c++98), mem_fun_ref (c++98), mem_fn (c++11). 文中给出了它们各自的使用范围及代码示例,提到了mem_fn的使用限制,使用bind来解决这个限制。 #基本用法 从名字也能看出个大概,mem_fn里面的mem就是指类的成员member, 而fn就是指function, 加在一起就是说member function,即mem_fn是用来适配类的成员函数的,下面从代码里来看一下它们的区别: ...

阅读全文 ...


【cocos2d-x 3.x 学习与应用总结】2: 在cocos2d-x中使用ccbi

20 Dec 2015

#前言 本文以3.9版本的cocos2d-x为例,总结了如何在代码中解析、加载ccbi文件。给出一个最简单的使用ccbi实现的helloworld的例子、一个加强版的HelloWorld示例、以及一个最贴近实际使用情况的ccbi使用示例, 并结合示例分析ccbi的解析过程。

官方示例程序

ccbi功能支持的源代码

cocos对ccbi的支持是在extensions这个模块里面,以v3.9为例,解析ccbi的代码的物理路径是放在cocos2d/cocos/editor-support/cocosbuilde这个路径下面,在vs的解决方案管理器中如下图所示: cocosbuilder_in_vs_3.9.png ...

阅读全文 ...