#include
#include
#include
#include
int main() {
std::vector vec = {7, 3, 4, 8, 1, 5, 2, 6, 9};
std::vector vec2= {1, 1, 0, 1, 0, 0, 1, 0, 0};
// Print vector using iterator
std::cout << "vec: ";
for (auto ii=vec.begin(); ii!= vec.end(); ii++) {
std::cout << *ii << " ";
}
std::cout << std::endl;
// Print vector using range for
std::cout << "vec2: ";
for (auto const & ele : vec2) {
std::cout << ele << " ";
}
std::cout << std::endl;
// Sort vector - sort is performed in-place
std::sort(begin(vec), end(vec));
std::cout << "Sorted vec: ";
for (auto const & ele : vec) {
std::cout << ele << " ";
}
std::cout << std::endl;
// Shuffle vector (in-place)
auto rand_engine = std::default_random_engine {};
std::shuffle(begin(vec), end(vec), rand_engine);
std::cout << "Shuffled vec: ";
for (auto const & ele : vec) {
std::cout << ele << " ";
}
std::cout << std::endl;
// Count
std::cout << std::endl;
std::cout << "std::count: " << std::endl;
int num_zeros = count(begin(vec2), end(vec2), 0);
int num_ones = count(begin(vec2), end(vec2), 1);
std::cout << "There are " << num_zeros << " 0's and " << num_ones << " 1's in vec2" << std::endl;
// Find
std::cout << std::endl;
std::cout << "std::find: " << std::endl;
for (auto & ele : {-1, 2, 7, 12}) {
if ( std::find(begin(vec), end(vec), ele) != end(vec) ) {
std::cout << " Found " << ele << " in vec!" << std::endl;
}
else {
std::cout << " Did NOT find " << ele << " in vec!" << std::endl;
}
}
// The example belows use the following lambdas:
// Positive number: [](int x) {return (x >= 0);}
// Negative number: [](int x) {return (x < 0);}
// Even number: [](int x) {return ((x % 2) == 0);}
std::cout << std::endl;
std::cout << "std::all_of, any_of, & none_of: " << std::endl;
// Are all the numbers in vec even?
if (std::all_of(begin(vec), end(vec), [](int x) {return ((x % 2) == 0); })) {
std::cout << "All numbers in vec are even" << std::endl;
}
else {
std::cout << "Not all numbers in vec are even" << std::endl;
}
// Are all the numbers in vec >= 0?
if (std::all_of(begin(vec), end(vec), [](int x) {return (x >= 0);} )) {
std::cout << "All numbers in vec are positive" << std::endl;
}
else {
std::cout << "Not all numbers in vec are positive" << std::endl;
}
// Are any numbers in vec even?
if (std::any_of(begin(vec), end(vec), [](int x) {return ((x % 2) == 0); } )) {
std::cout << "Some numbers in vec are even" << std::endl;
}
else {
std::cout << "No numbers in vec are even" << std::endl;
}
// Are none of the numbers in vec even?
if (std::none_of(begin(vec), end(vec), [](int x) {return ((x % 2) == 0); } )) {
std::cout << "None of the numbers in vec are even" << std::endl;
}
else {
std::cout << "Some numbers in vec are even" << std::endl;
}
return 0;
}