insert函数的用法

以下代码演示了insert函数的用法。但我对insert函数的那三个参数的含义有点困惑。比如:intArray.insert(intArray.begin()+1,int... 以下代码演示了insert函数的用法。但我对insert函数的那三个参数的含义有点困惑。比如:
intArray.insert(intArray.begin()+1,intArray.begin()+3,intArray.begin()+5);

我的理解是:在向量中第2个元素的位置,插入当前向量中第4到第6个元素的值。那么输出结果应该是:
1 3 4 5 2 3 4 5 6 7 8 9

但实际输出是:
0 1 2 1 2 3 4 5 6 7 8 9

解释一下喈

#include <iostream>
#include <vector>
using namespace std;

int main()
{
vector<int> intArray;
int i;
for(i=0;i<10;i++)
{
intArray.push_back(i);
cout<<intArray[i]<<" ";
}

cout<<endl;
intArray.insert(intArray.begin()+1,intArray.begin()+3,intArray.begin()+5);

for(i=0;i<intArray.size();i++)
cout<<intArray[i]<<" ";

system("pause");
return 0;
}
展开
 我来答
韧劲9
推荐于2017-10-03 · TA获得超过9224个赞
知道小有建树答主
回答量:1638
采纳率:92%
帮助的人:357万
展开全部
{insert name='history'} ,是用来显示浏览历史的。
跟踪代码后发现,控制语句是在 includes/lib_insert.php 文件。
这个文件是ECSHOP 动态内容函数库。
里面定义各个函数的格式都是 function insert_***() ,每个函数都是一个功能控制模块,
在模板中可以使用 {insert name=‘***’ } 的方法进行调用。
根据对于后两个参数区间,是左闭右开的。
c.insert(B,L,R)
即在B位置,插入[L,R)之间的数。
对于0 1 2 3 4 5 6 7 8 9
c.insert(c.begin()+1,c.begin()+3,begin()+5);
操作的顺序是:
012123456789//后移两位给插入的数。
012123456789//将上面状态的第四个元素和第五个元素复制到应该插入的地方。

这样看起来不明朗。请看这种情况。
c.insert(c.begin()+3,c.begin()+1,begin()+4);
顺序:
0123453456789//在第四个位置后移3位
0121453456789//插入begin()+1
0121253456789//插入begin()+2
0121213456789//插入begin()+3
aauutthh
推荐于2017-10-02 · TA获得超过394个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:429万
展开全部
刚做过测试,你不说还没发现这样的题.
这个容器的插入是逐次进行的,而不是同时进行。
而且,对于后两个参数区间,是左闭右开的。
c.insert(B,L,R)
即在B位置,插入[L,R)之间的数。
对于0 1 2 3 4 5 6 7 8 9
c.insert(c.begin()+1,c.begin()+3,begin()+5);
操作的顺序是:
012123456789//后移两位给插入的数。
012123456789//将上面状态的第四个元素和第五个元素复制到应该插入的地方。

这样看起来不明朗。请看这种情况。
c.insert(c.begin()+3,c.begin()+1,begin()+4);
顺序:
0123453456789//在第四个位置后移3位
0121453456789//插入begin()+1
0121253456789//插入begin()+2
0121213456789//插入begin()+3
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
isiahe
2008-05-02 · TA获得超过328个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:0
展开全部
首先,插入的元素不包括第6个元素,而是第4、第5,两个元素。

然后,上面的结果与insert的操作方法有关:

insert时,首先将插入点的元素后移需要插入的元素个数,这里是2:
0123456789-->>012123456789
原位置的值不变。

移位之后是插入。
此时intArray.begin()+3指向的是第二个1,intArray.begin()+5是3。

所以插入的是,后两个12。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式