搜索
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 求指教,求鞭笞,关于vector的元素添加。
标题:
求指教,求鞭笞,关于vector的元素添加。
只看楼主
yaobao
等 级:
蒙面侠
威 望:
4
帖 子:1854
专家分:4121
注 册:2012-10-25
结帖率:
100%
楼主
已结贴
√
问题点数: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
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册: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
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-396640-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.157090 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved