C++程序员编码过程中经常会使用string(wstring)类,你是否思考过它的内部实现细节。比如这个类的迭代器是如何实现的?对象占多少字节的内存空间?内部有没有虚函数?内存是如何分配的?构造和析构的成本有多大?笔者综合这两天阅读的源代码及个人理解简要介绍之,错误的地方望读者指出。首先看看stri...
分类:
编程语言 时间:
2015-11-30 07:16:25
阅读次数:
259
rope实现的接口可以参考这里。rope是可伸缩的string实现:它们被设计为用于把string看作一个整体的高效操作 。比如赋值、串联和子串的操作所花的时间差不多不依赖字符串的长度。与C的字符 串不同,rope是超长字符串的一个合理的表现,比如编辑缓冲区或邮件信息。 在后端,rope被实现为引用...
分类:
其他好文 时间:
2015-09-21 21:18:30
阅读次数:
116
Swift提供了一种高性能的,兼容Unicode编码的String实现作为标准库 的一部分。在Swift2中,String类型不再遵守CollectionType协议。在以前,String类型是字符的一个集合,类似于数组。现 在,String类型通过一个characters属性来提供一个字符的集合。...
分类:
编程语言 时间:
2015-08-29 23:17:12
阅读次数:
278
相信写过C++的人肯定用过:
string str2(“11”);
string str1 = str2;
现在就让我深入挖掘下string str1 = str2;所包含的内容。
第一层:
把str2的内容“11”复制给了str1
第二层:
先定义了str1对象,把str2对象赋值给str1
第三层:
string类型为什么能够赋值,原来string实现了赋值运算符重载...
分类:
编程语言 时间:
2015-07-21 13:00:25
阅读次数:
159
//实现一个简洁版的class String
#include
#include
using namespace std;
class String
{
public:
String()
{
_str = new char[1];
_str[0] = '\0';
}
String(const char *str)
{
_str = new char[strlen(str)...
分类:
编程语言 时间:
2015-07-10 11:24:32
阅读次数:
123
对于超大数字的运算,用long long int仍然不能解决,这时候就需要考虑通过模拟运算和数组存储来实现高精度运算。
本文讨论借助C++的string来实现高精度的运算。...
分类:
编程语言 时间:
2015-06-03 10:05:02
阅读次数:
152
1 .java中,有的方法的参数类型是charsequence,这时候带入的参数实际上是字符串,这是怎么回事呢?????答: CharSequence是String实现的一个接口,相当简单,就是要求是一串字符。所以每个参数类型是CharSequence的方法,都可以实际代入String对象。 为什....
分类:
移动开发 时间:
2015-05-04 13:46:47
阅读次数:
131
#includeusing namespace std;class String{ friend ostream& operator=0&&e<=strlen(m_data)) return m_data[e];}ostream& operator<<(ostream& os,String& str...
分类:
其他好文 时间:
2015-01-12 22:13:28
阅读次数:
159
函数reverse_string(char * string)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。
#include
#include
#define SWAP(a,b,c) ((c)=(a),(a)=(b),(b)=(c))
void reverse_string(char * s)
{
char *p=s;
char t...
分类:
编程语言 时间:
2015-01-07 23:36:54
阅读次数:
262
class my_string{ friend ostream& operator<< (ostream&,my_string&);public: my_string():data(NULL) { } my_string(const char* str) { int n = strlen(s...
分类:
其他好文 时间:
2015-01-03 17:07:13
阅读次数:
178