简单的容器复制问题
题目是这样的:编写程序将int型的容器的所有元素复制到两个deque容器中,list容器的元素如果为偶数,则复制到一个deque容器中;如果为奇数,则复制到另一个deque容器中;
我写的代码如下:
#include <iostream>
#include <deque>
#include <list>
using namespace std;
int main()
{
int a;
list<int> b;
deque<int> c1 , c2;
while(cin >> a&&a!=0)
b.push_back(a);
if(b.size()/2==0)
{
for(list<int>::iterator i=b.begin();i!=b.end();i++)
c1.insert(c1.begin(),*i);
for(deque<int>::iterator k=c1.begin();k!=c1.end();k++)
cout << *k << " ";
}
else
{
for(list<int>::iterator j=b.begin();j!=b.end();j++)
c2.insert(c2.begin(),*j);
for(deque<int>::iterator l=c1.begin();l!=c1.end();l++)
cout << *l << " ";
}
return 0;;
}
编译没有错误,可就是不能实现功能,还望前辈指点,小弟不胜感激~~~
[解决办法]
if(b.size() % 2==0)
for(list<int>::iterator j=b.begin();j!=b.end();j++)
c2.insert(c2.begin(),*j);
for(deque<int>::iterator l=c2.begin();l!=c2.end();l++)
cout << *l << " ";
[解决办法]
楼主的意思是List里元素为奇数就放到容器c2里,元素为偶数就放到c1里。
但楼主写的代码的意思编程了。如果List容器元素有偶数个 都放到c1里。 List容器元素为奇数个,就都放到c2里。
楼主的题目我之前也做过。大概代码如下:
using namespace std;//是偶数返回true的函数对象struct even { bool operator() (const int x) const { return (x%2 == 0 ? true : false); } bool operator() (const int x) { return (x%2 == 0 ? true : false); }};//是奇数返回true的函数对象struct odd { bool operator() (const int x) const { return (x%2 == 0 ? false : true); } bool operator() (const int x) { return (x%2 == 0 ? false : true); }};template<class InputIterator,class OutputIterator,class Comp>OutputIterator filter(InputIterator first, InputIterator last,OutputIterator out,Comp pred) { InputIterator tem = first; //记录开始位置 while((first = find_if(first,last,pred)) != last) { //使用std::finde_if 函数去查找符合比较函数pred的对象 *out++ = *first++; } first = tem; //设置回原来的开始位置 return *out;}int main() { int a; list<int> b; deque<int> c1 , c2; while(cin >> a&&a!=0) b.push_back(a); filter(b.begin(),b.end(),c1.begin(),odd()); //把奇数放到c1中 filter(b.begin(),b.end(),c2.begin(),even()); //把偶数放到c2中 return 0;}