#include <iostream>
#include <functional>
#include <algorithm>
#include <iterator>
#include <deque>
#include <vector>
//逻辑运算
int main()
{
/************************************************************************/
//logical_and:逻辑与
/*
template<class Type>
struct logical_and : public binary_function<Type, Type, bool>
{
bool operator()(
const Type& _Left,
const Type& _Right
) const;
};
*/
/************************************************************************/
std::deque<bool> db1;
decltype(db1) db2, db3;
std::vector<int> iv1;
decltype(iv1) iv2;
std::generate_n(std::back_inserter(iv1), 10, []{return rand() % 10; });
std::generate_n(std::back_inserter(iv2), 10, []{return rand() % 10; });
for (auto each : iv1)
db1.push_back((bool)(each % 2 == 0)); //尾插法
for (auto each : iv2)
db2.push_front((bool)(each % 2 == 0)); //头插法
std::cout << "db1: ";//db1: 0 0 1 1 0 1 1 1 1 1
std::copy(db1.begin(), db1.end(), std::ostream_iterator<bool>(std::cout, " "));
std::cout << std::endl;
std::cout << "db2: ";//db2: 1 0 1 0 0 0 0 0 0 0
std::copy(db2.begin(), db2.end(), std::ostream_iterator<bool>(std::cout, " "));
std::cout << std::endl;
std::cout << "logical_and: "; //logical_and: 0 0 1 0 0 0 0 0 0 0
std::transform(db1.begin(), db1.end(), db2.begin(), std::back_inserter(db3), std::logical_and<bool>());
//0 0 1 0 0 0 0 0 0 0
std::copy(db3.begin(), db3.end(), std::ostream_iterator<bool>(std::cout, " "));
std::cout << std::endl;
/************************************************************************/
//logical_or:逻辑或
/*
template<class Type>
struct logical_or : public binary_function<Type, Type, bool>
{
bool operator()(
const Type& _Left,
const Type& _Right
) const;
};
*/
/************************************************************************/
db3.clear();
std::cout << "logical_or: ";//logical_or: 1 0 1 1 0 1 1 1 1 1
std::transform(db1.begin(), db1.end(), db2.begin(), std::back_inserter(db3), std::logical_or<bool>());
std::copy(db3.begin(), db3.end(), std::ostream_iterator<bool>(std::cout, " "));
std::cout << std::endl;
/************************************************************************/
//logical_not:逻辑非
/*
template<class Type>
struct logical_not : public unary_function<Type, bool>
{
bool operator()(
const Type& _Left
) const;
};
*/
/************************************************************************/
db3.clear();
std::cout << "logical_not: "; //logical_not: 1 1 0 0 1 0 0 0 0 0
std::transform(db1.begin(), db1.end(), std::back_inserter(db3), std::logical_not<bool>());
std::copy(db3.begin(), db3.end(), std::ostream_iterator<bool>(std::cout, " "));
std::cout << std::endl;
return 0;
}
====================打个广告,欢迎关注====================
QQ: | 412425870 |
微信公众号:Cay课堂 | |
csdn博客: | http://blog.csdn.net/caychen |
码云: | https://gitee.com/caychen/ |
github: | https://github.com/caychen |
点击群号或者扫描二维码即可加入QQ群: | |
|