首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

简单的容器复制有关问题

2012-07-31 
简单的容器复制问题题目是这样的:编写程序将int型的容器的所有元素复制到两个deque容器中,list容器的元素

简单的容器复制问题
题目是这样的:编写程序将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里。
楼主的题目我之前也做过。大概代码如下:

C/C++ code
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;} 

热点排行
Bad Request.