|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 求指教,求鞭笞,关于vector的元素添加。
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1571
人关注过本帖,
1
人收藏
标题:
求指教,求鞭笞,关于vector的元素添加。
只看楼主
加入收藏
yaobao
等 级:
蒙面侠
威 望:
4
帖 子:1854
专家分:4121
注 册:2012-10-25
结帖率:
100%
楼主
收藏
(1)
已结贴
√
问题点数:20 回复次数:35
求指教,求鞭笞,关于vector的元素添加。
string word;
vector<string> text;
while(cin>>word){
text.push_back(word);
}
这是《C++ primer》上的一段示范代码,可是我就有疑问了,这样没有标定text的所占内存的大小,就循环添加元素,text在内存中是如何处理的啊,顺序?链式?这样做难道不会造成内存管理的混乱吗?
求指教啊
搜索更多相关主题的帖子:
元素
word
如何
2013-01-15 10:55
举报帖子
使用道具
赠送鲜花
hahayezhe
来 自:湖南张家界
等 级:
贵宾
威 望:
24
帖 子:1386
专家分:6999
注 册:2010-3-8
第
2
楼
收藏
得分:0
处理方式与vector无关 由string自己处理
2013-01-15 11:06
举报帖子
使用道具
赠送鲜花
hahayezhe
来 自:湖南张家界
等 级:
贵宾
威 望:
24
帖 子:1386
专家分:6999
注 册:2010-3-8
第
3
楼
收藏
得分:5
vector所管理的字节 只有sizeof(string)而已!字符内容由string 自己的构造处理
2013-01-15 11:08
举报帖子
使用道具
赠送鲜花
rjsp
等 级:
版主
威 望:
528
帖 子:9031
专家分:54061
注 册:2011-1-18
第
4
楼
收藏
得分:5
顺序,自动扩张内存
举个例子,假设
int* p = new int[10];
size_t len = 0;
我可以添加10个元素,每添加一个则将len加一
当我添加第11个时,我先这么做:
int* p_ = new int[20];
memcpy( p_, p, 10*sizeof(int) );
然后就可以再添加10个。
2013-01-15 11:08
举报帖子
使用道具
赠送鲜花
peach5460
来 自:武汉
等 级:
贵宾
威 望:
30
帖 子:2780
专家分:6060
注 册:2008-1-28
第
5
楼
收藏
得分:10
汗...你还真是SM上瘾了呀
我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-01-15 11:18
举报帖子
使用道具
赠送鲜花
peach5460
来 自:武汉
等 级:
贵宾
威 望:
30
帖 子:2780
专家分:6060
注 册:2008-1-28
第
6
楼
收藏
得分:0
std::string在stl里面是char*的实现
所以在push_back的时候,实际上是push_back了一个int
所以不需要定义长度...
在erse的时候,会隐式的调用string的析构释放内存...
我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-01-15 11:20
举报帖子
使用道具
赠送鲜花
peach5460
来 自:武汉
等 级:
贵宾
威 望:
30
帖 子:2780
专家分:6060
注 册:2008-1-28
第
7
楼
收藏
得分:0
以下是引用
peach5460
在2013-1-15 11:20:24的发言:
std::string在stl里面是char*的实现
所以在push_back的时候,实际上是push_back了一个int
所以不需要定义长度...
在erse的时候,会隐式的调用string的析构释放内存...
再顺便跟你普及一下push_back
push_back实现的是浅拷贝
所以,只是把指针赋过去了...
我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-01-15 11:23
举报帖子
使用道具
赠送鲜花
yaobao
等 级:
蒙面侠
威 望:
4
帖 子:1854
专家分:4121
注 册:2012-10-25
第
8
楼
收藏
得分:0
以下是引用
rjsp
在2013-1-15 11:08:34的发言:
顺序,自动扩张内存
举个例子,假设
int* p = new int[10];
size_t len = 0;
我可以添加10个元素,每添加一个则将len加一
当我添加第11个时,我先这么做:
int* p_ = new int[20];
memcpy( p_, p, 10*sizeof(int) );
然后就可以再添加10个。
汗啊,那不是,添加几个元素就复制一次?这可是能动态增加元素了,可这招也.....
认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-15 11:33
举报帖子
使用道具
赠送鲜花
yaobao
等 级:
蒙面侠
威 望:
4
帖 子:1854
专家分:4121
注 册:2012-10-25
第
9
楼
收藏
得分:0
以下是引用
peach5460
在2013-1-15 11:20:24的发言:
std::string在stl里面是char*的实现
所以在push_back的时候,实际上是push_back了一个int
所以不需要定义长度...
在erse的时候,会隐式的调用string的析构释放内存...
???小猪兄弟,没看懂啊,我的C++才刚开始学,有的二专业术语看不懂啊
认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-15 11:37
举报帖子
使用道具
赠送鲜花
yaobao
等 级:
蒙面侠
威 望:
4
帖 子:1854
专家分:4121
注 册:2012-10-25
第
10
楼
收藏
得分:0
以下是引用
peach5460
在2013-1-15 11:23:26的发言:
再顺便跟你普及一下push_back
push_back实现的是浅拷贝
所以,只是把指针赋过去了...
小猪兄弟,这回的听懂了
认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-15 11:39
举报帖子
使用道具
赠送鲜花
36
1/4页
1
2
3
4
快速回复:
求指教,求鞭笞,关于vector的元素添加。
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.077662 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved