Skip to content

Instantly share code, notes, and snippets.

@dgodfrey206
dgodfrey206 / ts-singleton.cpp
Created December 29, 2014 17:15
Thread-safe singleton
#include <mutex>
#include <thread>
#include <iostream>
struct Singleton
{
static Singleton& instance()
{
std::lock_guard<std::mutex> lock(m);
static Singleton s;
@dgodfrey206
dgodfrey206 / tpool.cpp
Last active March 26, 2022 17:37
Thread pool
#include <deque>
#include <stack>
#include <mutex>
#include <thread>
#include <algorithm>
#include <functional>
#include <type_traits>
#include <unordered_map>
#include <condition_variable>
@dgodfrey206
dgodfrey206 / dlinkedlist.cpp
Created December 12, 2014 03:15
Doubly linked list
#include <iostream>
#include <initializer_list>
#include <stdexcept>
template <class T>
class list;
template <class T>
class Node
{
@dgodfrey206
dgodfrey206 / buffer_size.cpp
Created December 11, 2014 19:12
Size of buffer
#include <sstream>
#include <iostream>
template<typename Tag, typename Tag::type M>
struct grant_access
{
friend typename Tag::type get(Tag) { return M; }
};
template<class cT, long n>
@dgodfrey206
dgodfrey206 / cll.cpp
Created December 4, 2014 03:51
Circular linked list
#include <iostream>
template <class T>
class circular_linked_list
{
struct node;
node* tail{nullptr}, **back_ptr{&tail}, **front_ptr{nullptr};
int m_size{0};
template <class U>
@dgodfrey206
dgodfrey206 / deletenode.cpp
Created December 2, 2014 01:02
Deleting a node from a singly linked list
Node* DeleteNode(Node*& head, int value)
{
Node** ptr = &head, *next;
while (*ptr && (*ptr)->data != value)
ptr = &(*ptr)->next;
if (!*ptr)
return NULL;
@dgodfrey206
dgodfrey206 / traverse.cpp
Last active March 26, 2022 17:37
Difference traversal methods
#include <iostream>
class Node
{
public:
Node(int data, Node* left = nullptr, Node* right = nullptr)
: data(data)
, left(left)
, right(right)
{ }
@dgodfrey206
dgodfrey206 / line_inserter.cpp
Created November 26, 2014 00:18
line_inserter
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
class insertbuf : public std::streambuf
{
public:
insertbuf(std::ostream& os, std::string const& data)
: m_stream(os)
@dgodfrey206
dgodfrey206 / mylinkedlist.cpp
Last active August 29, 2015 14:10
My version of a linked list
#include <iostream>
#include <stdexcept>
template <class T>
class LinkedList;
template <class T>
class ListElement
{
friend LinkedList<T>;
@dgodfrey206
dgodfrey206 / matrix.cpp
Created November 19, 2014 01:47
Matrix class with multiplication
#include <stdexcept>
template <class T>
class Array
{
public:
Array();
Array(unsigned int, unsigned int = 0);
Array(Array const&);
~Array();