Skip to content

Instantly share code, notes, and snippets.

@dgodfrey206
dgodfrey206 / consecutive_find.cpp
Created November 18, 2014 20:03
consecutive_find() is a function that returns the beginning of a range that contains strictly N consecutive elements. It was part of a SO question that I answered.
#include <iostream>
#include <vector>
#include <algorithm>
template <class Iter>
Iter consecutive_find(Iter first, Iter last, std::size_t n)
{
Iter marker(first), lead(first);
std::size_t count(1);
@dgodfrey206
dgodfrey206 / Array2D.cpp
Last active March 26, 2022 17:37
A 2-dimensional array class
#include <stdexcept>
// uses the Array<T> class
template <class T>
class Array2D
{
protected:
unsigned int numberOfRows, numberOfColumns;
Array<T> array;
public:
@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();
@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 / 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 / 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 / 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 / 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 / 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 / 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
{