#ifndef CT_STANDARDCLOUDSTDVECTORT_HPP #define CT_STANDARDCLOUDSTDVECTORT_HPP #include "ct_cloud/ct_standardcloudstdvectort.h" template CT_StandardCloudStdVectorT::CT_StandardCloudStdVectorT(size_t size) : CT_AbstractCloudT() { if(size > 0) m_collection.resize(size); } template typename CT_StandardCloudStdVectorT::Iterator CT_StandardCloudStdVectorT::begin() { return m_collection.begin(); } template typename CT_StandardCloudStdVectorT::Const_Iterator CT_StandardCloudStdVectorT::constBegin() const { return m_collection.begin(); } template typename CT_StandardCloudStdVectorT::Iterator CT_StandardCloudStdVectorT::end() { return m_collection.end(); } template typename CT_StandardCloudStdVectorT::Const_Iterator CT_StandardCloudStdVectorT::constEnd() const { return m_collection.end(); } template size_t CT_StandardCloudStdVectorT::size() const { return m_collection.size(); } template size_t CT_StandardCloudStdVectorT::memoryUsed() const { return size() * sizeof(T); } template T& CT_StandardCloudStdVectorT::operator[](const size_t &index) { return pTAt(index); } template const T& CT_StandardCloudStdVectorT::operator[](const size_t &index) const { return pTAt(index); } template void CT_StandardCloudStdVectorT::erase(const size_t &beginIndex, const size_t &sizes) { size_t endIndex = beginIndex+sizes; size_t cpySize = size()-(beginIndex+sizes); if(cpySize > 0) { T *data = m_collection.data(); T *dst = data+beginIndex; T *src = data+endIndex; memcpy(dst, src, sizeof(T)*cpySize); } resize(size()-sizes); } template void CT_StandardCloudStdVectorT::resize(const size_t &newSize) { m_collection.resize(newSize); m_collection.shrink_to_fit(); } template void CT_StandardCloudStdVectorT::internalCopyData(const size_t &destIndex, const size_t &srcIndex, const size_t &size) { T *data = &pTAt(0); T *dst = data+destIndex; T *src = data+srcIndex; memcpy(dst, src, sizeof(T)*size); } template void CT_StandardCloudStdVectorT::copyDataFromTo(T* src, const size_t &destIndex, const size_t &size) { T *data = &pTAt(0); T *dst = data+destIndex; memcpy(dst, src, sizeof(T)*size); } template CT_AbstractCloud* CT_StandardCloudStdVectorT::copy() const { size_t s = size(); CT_StandardCloudStdVectorT *cloud = new CT_StandardCloudStdVectorT(s); for(size_t i=0; i void CT_StandardCloudStdVectorT::addT(const T &val) { m_collection.push_back(val); } template T& CT_StandardCloudStdVectorT::addT() { T tmp; addT(tmp); return *(m_collection.end()-1); } template void CT_StandardCloudStdVectorT::replaceT(const size_t &index, T &newVal) { m_collection[index] = newVal; } #endif // CT_STANDARDCLOUDSTDVECTORT_HPP