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;
} 展开
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;
} 展开
3个回答
展开全部
{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
跟踪代码后发现,控制语句是在 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
展开全部
刚做过测试,你不说还没发现这样的题.
这个容器的插入是逐次进行的,而不是同时进行。
而且,对于后两个参数区间,是左闭右开的。
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
这个容器的插入是逐次进行的,而不是同时进行。
而且,对于后两个参数区间,是左闭右开的。
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,插入的元素不包括第6个元素,而是第4、第5,两个元素。
然后,上面的结果与insert的操作方法有关:
insert时,首先将插入点的元素后移需要插入的元素个数,这里是2:
0123456789-->>012123456789
原位置的值不变。
移位之后是插入。
此时intArray.begin()+3指向的是第二个1,intArray.begin()+5是3。
所以插入的是,后两个12。
然后,上面的结果与insert的操作方法有关:
insert时,首先将插入点的元素后移需要插入的元素个数,这里是2:
0123456789-->>012123456789
原位置的值不变。
移位之后是插入。
此时intArray.begin()+3指向的是第二个1,intArray.begin()+5是3。
所以插入的是,后两个12。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询