把一个vector append到另外一个vector

vertex 2003-11-26 05:36:06
我KAO, STL的vector怎么没有append这个成员函数呢? STL的泛型算法里我也没找到? 难道没有吗?
...全文
2067 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
abitz 2003-11-27
  • 打赏
  • 举报
回复
to jeckyz(深圳) ( )
vector< int > a, b;
a.push_back( &b ); // 我想像中这样可以编译
这个好像真不行,push_back的引数需要int,但 &b是vector *。
而且,就算加进去了也不行,那也不能支持随机访问.
abitz 2003-11-27
  • 打赏
  • 举报
回复
好像reserve好,resize会将多出的空间添上内容,这显然是没啥用处的
abitz 2003-11-27
  • 打赏
  • 举报
回复
to sevencat(七猫) :
啥叫reserver?reserve or resize?
个人觉得是resize好一点,但是从源码看来好像工作一样。
resize名好一点
sevencat 2003-11-27
  • 打赏
  • 举报
回复
对了,拷贝构造函数我还没算在里面。那样更厉害了。

还是楼上的提醒了我。
而且在构析函数里面还不能有一些像关闭文件之类的小动作,不然也会死得较惨。
cxjddd 2003-11-27
  • 打赏
  • 举报
回复
还要数数拷贝构造函数:)
sevencat 2003-11-27
  • 打赏
  • 举报
回复
reserver再copy,insert.
不用reserver你会死得很难看。

我有一次在vector中增加五个元素。结果调用构造函数5次,构析函数20次,全是重新分配的原因。
jeckyz 2003-11-27
  • 打赏
  • 举报
回复
是我写错了:

vector< vector< int >* > a;
vector< int > b;
a.push_back( &b );

不过访问确不好搞,呵呵。
cxjddd 2003-11-26
  • 打赏
  • 举报
回复
a.insert (a.end(), b.begin(), b.end());
jeckyz 2003-11-26
  • 打赏
  • 举报
回复
TO:abitz(阿奈)
所以我才不明白为什么楼主想这样用,按楼主的意思不就成了把内容复制一份了,那又跟append 一个 vector 有什么关系了。我说把 vector 的地址 append 确实是因为我想象中可以,我是把 vector 简单地当成一个数组来看待了,不过我是没试过。我是这么想的:

vector< int > a, b;
a.push_back( &b ); // 我想像中这样可以编译

如果真的错了,请原谅,我现在没法试。
abitz 2003-11-26
  • 打赏
  • 举报
回复
to jeckyz(深圳) :
把vector 的地址append好像不行吧?
vector 分配在连续的存储空间上,在任何时候它都要保持这一性质。
对“把vector的地址append“
一是好像没法作,
二是就算append了也就不是vector了,还不如早用list之类了事。
jeckyz 2003-11-26
  • 打赏
  • 举报
回复
push_back 和 back_insert 都可以啦,不过为什么楼主不是把vector的地址 append,而想把整一个 vector append
longworm 2003-11-26
  • 打赏
  • 举报
回复
vector<int> v1;
vector<int> v2;
copy(v1.begin(),v1.end(),back_inserter(v2)) // 把v1的内容append到v2后面

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧