求教STL

kim_jinye 2010-12-07 04:34:58
如有std::deque<int> deque, std::vector<int> vector.

for(int i = 0; i < 10; ++i)
deque.push_back(i);

for(int i = 100; i < 1000; i+=100)
vector.push_back(i);

要将deque中的所有元素插入到vector的200和300之间应该怎么做?

如插入后vector中的元素为:100,200,0,1,2,3,4,5,6,7,8,9,300,400,500......


求教大虾
...全文
112 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kim_jinye 2010-12-07
  • 打赏
  • 举报
回复
thanks
太乙 2010-12-07
  • 打赏
  • 举报
回复
#include <algorithm>
#include <iostream>
#include <vector>
#include <deque>
#include <iterator>
using namespace std;

int main()
{
vector<int> vec;
for(int i = 100; i < 1000; i+=100)
{
vec.push_back(i);
}
deque<int> deq;
for(int i =0; i < 10; ++i)
{
deq.push_back(i);
}
vec.insert(find(vec.begin(), vec.end(), 300), deq.begin(), deq.end());
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, ","));
return 0;
}
hw_henry2008 2010-12-07
  • 打赏
  • 举报
回复
直接到最后插入10个空元素,
然后将300以后的所有元素后移10个位置
之后再将0,1,2,3```9从200后面插入呗
中间适当找到元素位置。
使用迭代器,楼上说了
qq120848369 2010-12-07
  • 打赏
  • 举报
回复
楼上都教你了,先用find得到迭代器,再用insert插入一个range.
luciferisnotsatan 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kim_jinye 的回复:]

谢谢大家,请大家帮忙找一个比较精巧的算法,不要太简单了
[/Quote]
不用vector.insert(iter,deque.begin(),deque.end())?
可以用3楼的方法。

kim_jinye 2010-12-07
  • 打赏
  • 举报
回复
谢谢大家,请大家帮忙找一个比较精巧的算法,不要太简单了
szhyu 2010-12-07
  • 打赏
  • 举报
回复
你用迭代器做

找到300 然后 vector.insert(iter,deque.begin(),deque.end())
luciferisnotsatan 2010-12-07
  • 打赏
  • 举报
回复
iterator insert(
iterator _Where,
const Type& _Val
);
void insert(
iterator _Where,
size_type _Count,
const Type& _Val
);
template<class InputIterator>
void insert(
iterator _Where,
InputIterator _First,
InputIterator _Last
);

Parameters
_Where
The position in the vector where the first element is inserted.

_Val
The value of the element being inserted into the vector.

_Count
The number of elements being inserted into the vector.

_First
The position of the first element in the range of elements to be copied.

_Last
The position of the first element beyond the range of elements to be copied.

luciferisnotsatan 2010-12-07
  • 打赏
  • 举报
回复
vc.insert(vc.begin()+2, dq.begin(),dq.end())
就想叫yoko 2010-12-07
  • 打赏
  • 举报
回复
vector就相当于数组
你这属于一个数组的插入问题
需要把200以后的数据全部往后挪
你可以计算出200后有多少个数据
然后将他们从300开始放置
在在200-300之间插入你队列取的数据
luciferisnotsatan 2010-12-07
  • 打赏
  • 举报
回复
用 insert 成员函数
yihandrensunyong 2010-12-07
  • 打赏
  • 举报
回复
说一个最笨的方法 将VECTOR中数据先存在数组,然后把需要插入的数据按要求插入到数组,清空VECTOR,将数组中的数据载入VECTOR

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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