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