Skip to content

Instantly share code, notes, and snippets.

@rojaster
Created March 27, 2019 21:45
Show Gist options
  • Save rojaster/7110f61f213eef6cb9f5162b6651f6dc to your computer and use it in GitHub Desktop.
Save rojaster/7110f61f213eef6cb9f5162b6651f6dc to your computer and use it in GitHub Desktop.
Display items from the list in two lines. The odds in the first row and evens in the second row. (http://tpcg.io/CXNuxt)
#include <iostream>
#include <list>
#include <vector>
#include <cstdlib>
#include <algorithm>
#include <functional>
// если использовать это то получается херово, потому что будет два вызова
struct prtList
{
std::vector<int> odds;
std::vector<int> evens;
void operator()(int n) { (n % 2 == 0) ? odds.emplace_back(n) : evens.emplace_back(n); }
virtual ~prtList()
{
for(auto elem : evens)
std::cout << elem << " ";
std::cout << std::endl;
for(auto elem: odds)
std::cout << elem << " ";
std::cout << std::endl;
}
};
// однако стоит сделать синглтоновый класс(не структуру потому что поля видимости)
class sing
{
public:
std::vector<int> odds;
std::vector<int> evens;
static sing& getInst()
{
static sing inst;
return inst;
}
virtual ~sing()
{
{
for(auto elem : evens)
std::cout << elem << " ";
std::cout << std::endl;
for(auto elem: odds)
std::cout << elem << " ";
std::cout << std::endl;
}
}
private:
sing(){};
public:
sing(sing const&) = delete;
void operator=(sing const&) = delete;
};
void prtList1(int i)
{
(i%2 == 0) ? sing::getInst().odds.emplace_back(i) : sing::getInst().evens.emplace_back(i);
};
int main(int argc, char **argv){
int n = 7;
const char* argv1[7]{"1","2","3", "4", "5", "66", "97"};
std::list<int> l;
for (int i = 1; i <= n; ++i) {
l.emplace(l.end(), atoi(argv1[i-1]));
}
// Expected output : http://tpcg.io/CXNuxt
// 1 3 5 97
// 2 4 66
std::for_each(l.begin(), l.end(), prtList1);
// std::for_each(l.begin(), l.end(), prtList()); // тут будет двойной вывод, потому что синглтон необходимо реализовать, чтобы не было вызвано уничтожение двух объектов. надо надо один инстанс
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment