Code Monkey home page Code Monkey logo

vector-implementation's Introduction

Custom Vector Implementation

A custom vector implementation, similar to the C++ STL vector. Uses Google Tests for testing.

Matches C++ STL vector

- Works with custom built types - Dynamic resizing when inserting elements - Implements iterators

Advantages Over C++ STL vector

- Slightly faster times when inserting built in types and almost identical times when inserting custom types.

Disadvantages Over C++ STL vector

- Slower popping times.

Timed Test

Below is a timed test for inserting 25 million random ints, chars, and points. ![Vector-Implementation](Timing.jpg)

Google Tests

Google Tests was used for unit testing in the project.

Implemented Methods

Constructors

- Vector(); - explicit Vector(size_t s); - Vector(const Vector& arg); - Vector& operator=(const Vector& arg); - ~Vector();

Iterators

- iterator begin(); - const iterator begin() const; - iterator end(); - const iterator end() const; - const iterator cbegin() const; - const iterator cend() const;

Capacity

- bool empty() const; - size_t capacity() const; - void reserve(size_t); - void resize(size_t, T = T()); - size_t size() const; - size_t max_size() const;

Modifiers

- void clear(); - void push_back(constT&); - void pop_back();

Element Access

- T& at(size_t n); - const T& at(size_t n) const; - T& operator[](int i); - const T& operator[](int i) const; - T& front(); - const T& front() const; - T& back(); - const T& back() const; - T* data(); - const T* data() const;

vector-implementation's People

Contributors

miguel-deniz avatar

Stargazers

Sultangazy Yergaliyev avatar  avatar Georgiy Lebedev avatar Elvin Gasanov avatar  avatar  avatar Dmitry A avatar SeongBeom Choi avatar  avatar Lev Platonov avatar Minh Bao avatar charlie.zip avatar  avatar NGUYEN VAN ANH TUAN avatar Amit Kesari avatar  avatar Jason avatar  avatar 차상순 avatar Ziyue(Hadley) Hou avatar Youssef Hussien avatar Ivan avatar  avatar Raul Gavriș avatar

Watchers

James Cloos avatar  avatar Ivan avatar  avatar

vector-implementation's Issues

Not compatible with custom class objects

Unfortunately, this container implementation supports storing basic data types only. Also in test cases, only basic types are checked.
The new operator allocates memory and calls the default constructor.

template<class T>
inline void Vector<T>::reserve(int newalloc)
{
	if (newalloc <= _space) return;

	T* p = new T[newalloc];
(...)

source

Implementation of std::vector does not call the constructor for objects when calling the reserve() method.

You should use something like this for memory allocation:
reinterpret_cast<T*>(new int8_t[newalloc * sizeof(T)]);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.