cout << "sizeof(buffer) = " << sizeof(buffer) << endl; for(int i = 0; i < sizeof(buffer); i++){ buffer[i] = i; //第一种方式 start=clock(); vector data(buffer, buffer + sizeof(buffer)); end=clock(); printf("data: total time = %fms\n",(float)(end - start) / CLOCKS_PER_SEC * 1000); //第二种方式:push_back vector str; start=clock(); for(int i = 0; i < sizeof(buffer); i++){ str.push_back(buffer[i]); end=clock(); printf("push_back: total time = %fms\n",(float)(end - start) / CLOCKS_PER_SEC * 1000); 总结:第一种方式更快! str.assign(buffer); str.assign(buffer, strlen(buffer)); str.assign(buffer, sizeof(buffer)/sizeof(buffer[0])-1... http://blog.csdn.net/xinwang24/article/details/6612686 http://zhidao.baidu.com/link?url=or5e32M8_B32g1alI6fHMiu9e5GNeVFf4Lrp2ZhIfP3ngnXzNDNwpGCpGCP0tXH1nQqJtRECNC9BOoLbQClOZa http://blog.si 动态数组优点:和数组类似开辟一段连续的空间,并且支持随机访问,所以它的查找效率高其时间复杂度O(1)。 动态数组缺点:由于开辟一段连续的空间,所以插入删除会需要对数据进行移动比较麻烦,时间复杂度O(n),另外当空间不足时还需要进行扩容。 vector 与list的比较: vector 拥有一段连续的内存空间,因此支持随机访问,如果需要高效的随即访问,而不在乎插入和删除的效率,使用 vector 。list拥有... <br />最近学 c++ ,总遇到数据类型的 换的问题, c++ 内部提供了很好的数据类型机制,非常便利,然而一下子从c c++ ,总会碰到数据类型不兼容的问题,这就需要进行数据 换,下面就是我做的几个数据类型相互 换,已经在visual studio 2010 上调试通过;<br />各种数据类型的 换:<br />     string ch("iloveyou");<br />     //memcpy(&ta,&ch,1);<br /> vector < char > ta;<br /> 1.String16 const char * String16 name16 = String16("Hello World"); String8 name8 = String8(name16); const char *buffer = name8.string(); printf("buffer = %s\n",buffer); String16.string()其实是c... char str1[] = { "abcd" }; char str2[4] = { 'a','b','c',0 }; char str3[4] = { 'a','b','c','d' };//单纯的字符数组,这种字符数组,因为末尾没 写 C++ 程序时经常会遇到string、 vector < char >和(const) char *之间的 换,本文介绍了其间的 换方法和注意事项。 1. string vector < char > string所存储字符串不包含'\0',所以 vector 后,通过 vector .data()直接输出会有问题,会往后找直到'\0',会出现乱码。所以应该在 vector 后手动再加上'\0',这样在 vector .data()输出字符串就没问题了。但此时 vector .size()会比string.le 这是C中动态结构数组的实现(也是用法).我以前曾经在代码审查中发布过#include #include #include typedef struct{int ID; char * name;} Student;// array of structstypedef struct{Student *array;size_t used;size_t size;} Array;void initArray... 通常使用 vector < char >来存储二进制数据(比如网络数据包).因此它会与 char * 进行相互 换,具体方法如下例所示: #include <iostream> #include < vector > #include <iterator> #include <algorithm> #include <cstring> us... 条款13:尽量使用 vector 和string来代替动态分配的数组 这一刻,你决定使用new来进行动态分配,你需要肩负下列职责: 你必须确保有的人以后会delete这个分配。如果后面没有delete,你的new就会产生一个资源泄漏。 你必须确保使用了delete的正确形式。对于分配一个单独的对象,必须使用“delete”。对于分配一个数组,必须使用“delete []”。如果使 c++ ,经常用到缓存,但缓存如何定义呢,一般我们使用void* 或 char *作为存储的基本类型,对的缓存的操作定义也有多种方式,本文就常用的几种方式做了一个测试对比,看看每种方式具有什么样的 性能 和特点。首先看看如下测试代码: #define NUM (100*10000) typedef basic_string bstring; void teststring() bstring