ndk中包含了stl对应的库,在$(NKD_HOME)/sources/cxx-stl/stlport/stlport有关Android NDK的C++ STL开发相关总结如下:从Android NDK r5开始支持了STL Port,在这个版本开始就可以使用部分STL库的功能了,比如说vector...
分类:
移动开发 时间:
2014-06-25 15:25:39
阅读次数:
183
// STL.cpp : 定义控制台应用程序的入口点。////vector是一个连续的向量,相当于数组。vector不建议除了尾部之外的数据添加删除操作。//vector::iterator 迭代器#include "stdafx.h"#include#includeusing namespace ...
分类:
其他好文 时间:
2014-06-25 14:19:23
阅读次数:
177
关于STL容器,最了不起的一点是,它们会自动增长以便容纳下你放入其中的数据,只要没有超出它们的最大限制就可以。对于vector和string,增长过程是这样来实现的:每当需要更多空间时,就调用与realloc类似的操作。这一类似于realloc的操作分为4部分:
分配一块大小为当前容量的某个倍数的新内存。在大多数实现中,vector和string的容量每次以2的...
分类:
其他好文 时间:
2014-06-25 08:40:21
阅读次数:
287
??
当我们需要从矢量中删除一些元素,通常是通过调用区间形式的erase。这很好的缩减了改矢量的大小,但并没有减小它的容量。如果你的矢量在某一个时刻拥有十万个候选人,那么它的容量将继续保持在(至少)100000,即使后来其中只有10个元素。为了避免矢量仍占用不再需要的内存,我们希望有一种方法能把它的容量从以前的最大值缩减到当前需要的数量。这种对容量的缩减通常被称为“shrink
to f...
分类:
其他好文 时间:
2014-06-25 08:25:27
阅读次数:
172
vector底层采用的是一个数组来实现,list底层采用的是一个环形的双向链表实现,而deque则采用的是两者相结合,所谓结合,并不是两种数据结构的结合,而是某些性能上的结合。我们知道,vector支持随机访问,而list支持常量时间的删除,deque支持的是随机访问以及首尾元素的删除。...
分类:
其他好文 时间:
2014-06-25 08:17:41
阅读次数:
383
??
一般情况下,是用typename还是用class纯粹是一个风格问题。但是在一种情况下,它就不是一个风格问题了。为了避免潜在的语法解析二义性,你需要在从属于形式类型参数的类型名前面使用typename。这样的类型被称为从属类型,用一个例子可以说明这一点。假设你要写一个函数模板,给它一个STL容器,它将返回容器中的最后一个元素是否大于第一个元素。下面是一种实现方式:
template...
分类:
其他好文 时间:
2014-06-25 07:41:01
阅读次数:
200
??
通常情况下,旧的C API使用数组合char*指针来进行数据交换而不是vector或string对象。这样的API还将存在很长的一段时间,如果我们想有效地使用STL,我们就必须与它们和平共处。
幸运的是,这很容易做到。如果有一个vector v,而需要得到一个指向v中数据的指针,从而可把v中的数据作为数组来对待,那么只需要使用&v[0]就可以了。对于string
s,对应的形...
??
作为一个STL容器,vector只有两点不对。首先,它不是一个STL容器。其次,它并不存储bool。除此之外,一切正常。
一个对象要成为容器,就必须满足C++标准中列出的所有条件,其中一个条件是,如果c是包含对象T的容器,而且c支持operator[],那么下面的代码必须能够被编译:
T *p = &c[0];
换句话说,如果用operator[]取得了contain...
分类:
其他好文 时间:
2014-06-25 06:49:34
阅读次数:
242
STL中的神器next_permutation和prev_permutation函数
全排列...
分类:
其他好文 时间:
2014-06-24 22:41:03
阅读次数:
271
(一)
假设一个class用来表现有理数,允许整数“隐式转换为”有理数似乎很合理。
class Rational{
public:
Rational(int numerator = 0, int denominator = 1); //刻意不为explicit;允许int-to-Rational隐式转换
int numerator()const;
int den...
分类:
编程语言 时间:
2014-06-24 22:30:51
阅读次数:
270