社区
新手乐园
帖子详情
vector如何得到所存数据的首地址
xt_jat
2006-12-26 04:26:49
在VC6中,我常这样用
std::vector<char> datas ;
如果有一个函数 count(char* pData, int size) ;
我就写成count( datas.begin(), datas.size()) ;
可这种方法,在别的C++编译器,比如GCC通不过。大家在有这样的需求时,会怎么做?
...全文
1345
8
打赏
收藏
vector如何得到所存数据的首地址
在VC6中,我常这样用 std::vector datas ; 如果有一个函数 count(char* pData, int size) ; 我就写成count( datas.begin(), datas.size()) ; 可这种方法,在别的C++编译器,比如GCC通不过。大家在有这样的需求时,会怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BasicFong
2006-12-26
打赏
举报
回复
6楼的,学习中
ATField
2006-12-26
打赏
举报
回复
不能用datas.begin(),这个返回的是迭代器,对于vector来说通常是指针,指向实际位置,但是不能依赖于这种行为。用&data[0]就可以了(不为空),vector中的数据是连续的。但是由于vector中不一定会有字符串的结束符'\0',所以这种情况还是用string,或者不用字符串函数。
珍惜生命远离CPP
2006-12-26
打赏
举报
回复
不为空的时候
&data[0];
cunsh
2006-12-26
打赏
举报
回复
<<Effective STL>>
条款16: 如何将vector和string的数据传给遗留的API
要得到vector中第一个元素的指针.用&v[0] .
但要注意当v为空时. &v[0]的结果是未定义的. 应该用 v.empty() 判断一下.
不要用迭代器v.begin()代替&v[0] . 可以用 &*v.begin() .
要将string转换成c字符串用c_str() .
但不能用&s[0]. 它和vector不一样. 它没有保证元素连续存储在一起.
string也不保证以'\0'结尾.
KUCHIBUE
2006-12-26
打赏
举报
回复
LS同志,LZ的vector是用char来实例化的。。。
ouyh12345
2006-12-26
打赏
举报
回复
这样好象不行吧。
vector存的是值,而地址不一定是连续的,所以不能用char *的方式来使用vector。
再说了,datas.begin()的类型是std::vector<char>::iterator
KUCHIBUE
2006-12-26
打赏
举报
回复
&(*datas.begin()) 行不行?
ShardowM
2006-12-26
打赏
举报
回复
应该不会通不过的,可能你的环境变量设置的有问题.
C++存储
数据
结构之三
vector
ector简介
vector
是STL中最常见的容器,它是一种顺序容器,支持随机访问。
vector
是一块连续分配的内存,从
数据
安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而
vector
是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。
vector
的扩充机制:按照容器现在容量的一倍进行增长。v
Linux
vector
最大存储数量,C++ STL
vector
容量(capacity)和大小(size)的区别
很多初学者分不清楚
vector
容器的容量(capacity)和大小(size)之间的区别,甚至有人认为它们表达的是一个意思。本节将对
vector
容量和大小各自的含义做一个详细的介绍。
vector
容器的容量(用 capacity 表示),指的是在不分配更多内存的情况下,容器可以保存的最多元素个数;而
vector
容器的大小(用 size 表示),指的是它实际所包含的元素个数。对于一个 v...
27.【C/C++ 最全
vector
数组的用法 (详解)】
vector
数组
VECTOR
数组
本文摘自博客,欢迎前往博客以获得更好的体验。
VECTOR
数组
Vector
是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,
vector
是一个能够存放任意类型的动态数组。 可以这样说,
vector
就是一个不定长的数组。不经如此,它还将一些常用的操作“封装”在了
vector
类型内部。 容器特性 顺序序列 动态数组 支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相.
c++ 中
vector
用法
本文实例展示了C++中的
vector
用法,分享给大家供大家参考。具体如下: 一、概述
vector
是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种
数据
结构和算法的模板类和函数库。
vector
是一个容器,它能够存放各种类型的对象,简单地说,
vector
是一个能够存放任意类型的动态数组,可以动态改变大小。 例如: ? 1 2
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章