Posts

【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 ...

阅读全文 ...


【C++ STL应用与实现】56: 使用std::unique删除重复元素

19 Dec 2015

本系列文章的目录在这里:目录. 通过目录里可以对STL总体有个大概了解 #前言 本文介绍了STL中的unique算法的使用,结合一个具体例子讲解如何使用它删除自定义类型结合里面的重复元素(不仅仅是连续的)。这篇文章最早写作于2012年6月在中关村软件园实习的时候,在2015年12月的时候,重新整理了格式,并搬运到了github博客.

原型

<algorithm>中的unique函数, 它能删除连续序列的副本(Remove consecutive duplicates in range). 原型如下:
template <class ForwardIterator>
  ForwardIterator unique ( ForwardIterator first, ForwardIterator last );

template <class ForwardIterator, class BinaryPredicate>
  ForwardIterator unique ( ForwardIterator first, ForwardIterator last,
                           BinaryPredicate pred );
...

阅读全文 ...