vczh/vczh_toys
vczh/vczh_toys has 1,073 GitHub stars and 292 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-11 01:09 UTC. Last push 2020-05-25.
This repository contains vczh's toys for black magic codes or experiments
Measured star growth
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Originalvczh_toys
This repository contains vczh's toys for black magic codes or experiments:
- garbage collection library for C++11
- multiple dimentional array for C++11
- linq for C++11 and STL
- Y function for writing recursive lambda expression
###./CppGarbageCollection ######// garbage collection library for C++
#include "gc_ptr.h"
using namespace vczh;
class Node : ENABLE_GC
{
public:
gc_ptr<Node> next;
};
int main()
{
gc_start(0x00100000, 0x00500000);
{
auto x = make_gc<Node>();
auto y = make_gc<Node>();
x->next = y;
y->next = x;
// static_gc_cast and dynamic_gc_cast is waiting for you who like doing pointer conversion
}
gc_force_collect(); // will search and delete x and y here
gc_stop(); // will call gc_force_collect()
}
###./CppMultiDimentionArray ######// multiple dimentional array for C++
#include "array.h"
using namespace vczh;
int main()
{
// int x[3][4][5]; but the lengths can be non-constant expressions
array<int, 3> x((array_sizes(), 3, 4, 5));
// first way to do x[1][2][3] = 10;
x[1][2][3] = 10;
// second way to do x[1][2][3] = 10;
array_ref<int, 2> x1 = x[1];
array_ref<int, 1> x2 = x1[2];
int& x3 = x2[3];
x3 = 10;
return 0;
}
###./CppLinq ######// linq for C++11 and STL
#include "linq.h"
#include <iostream>
using namespace std;
using namespace vczh;
int main()
{
{
// calculate sum of squares of odd numbers
int xs[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int sum = from(xs)
.where([](int x){return x % 2 == 1; })
.select([](int x){return x * x; })
.sum();
// prints 165
cout << sum << endl;
}
{
// iterate of squares of odd numbers ordered by the last digit
vector<int> xs = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (auto x : from(xs)
.where([](int x){return x % 2 == 1; })
.select([](int x){return x * x; })
.order_by([](int x){return x % 10; })
)
{
cout << x << " ";
}
// prints 1 81 25 9 49
cout << endl;
}
{
struct person
{
string name;
};
struct pet
{
string name;
person owner;
};
person magnus = { "Hedlund, Magnus" };
person terry = { "Adams, Terry" };
person charlotte = { "Weiss, Charlotte" };
person persons[] = { magnus, terry, charlotte };
pet barley = { "Barley", terry };
pet boots = { "Boots", terry };
pet whiskers = { "Whiskers", charlotte };
pet daisy = { "Daisy", magnus };
pet pets[] = { barley, boots, whiskers, daisy };
auto person_name = [](const person& p){return p.name; };
auto pet_name = [](const pet& p){return p.name; };
auto pet_owner_name = [](const pet& p){return p.owner.name; };
// print people and their animals in to levels
/* prints
Adams, Terry
Barley
Boots
Hedlund, Magnus
Daisy
Weiss, Charlotte
Whiskers
*/
for (auto x : from(persons).group_join(from(pets), person_name, pet_owner_name))
{
// x :: zip_pair<string, zip_pair<person, linq<pet>>>
cout << x.second.first.name << endl;
for (auto y : x.second.second)
{
cout << " " << y.name << endl;
}
}
// print people and their animals
/* prints
Adams, Terry: Barley
Adams, Terry: Boots
Hedlund, Magnus: Daisy
Weiss, Charlotte: Whiskers
*/
for (auto x : from(persons).join(from(pets), person_name, pet_owner_name))
{
// x :: zip_pair<string, zip_pair<person, pet>>
cout << x.second.first.name << ": " << x.second.second.name << endl;
}
}
}
###./CppRecursiveLambda ######// Y function for writing recursive lambda expression
#include "lambda.h"
#include <iostream>
#include <string>
using namespace std;
using namespace vczh;
int main()
{
auto fib = Y([](function<int(int)> fib, int i)
{
return i < 2 ? 1 : fib(i - 1) + fib(i - 2);
});
for (int i = 0; i < 10; i++)
{
cout << fib(i) << ' ';
}
cout << endl;
}
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,900 starspublic-apis/public-apis
A collective list of free APIs
498,290 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
453,052 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,371 stars