内存数据

    技术2022-05-20  102

    // dd.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <vector> #include <algorithm> #include <functional> #include <iostream> namespace WX {     //默认数据没有重复     template<typename D>     class CWXMemData : public std::vector<D>     {     public:         //添加一个数据         void Add(D& data)         {             this->push_back(data);         }         //有则删除一个数据         void Delete(D& data)         {             this->erase(data);         }         //有则修改一个数据         template<class _Pr> inline         void Edit(D& data,  _Pr _Pred)         {             std::vector<D>::iterator pos = std::find_if(this->begin(), this->end(), _Pred);             if(pos!=this->end())             {                 *pos = data;             }         }     }; } //数据 class CData { public:     CData():m_n(0)     {     }     CData(int data)     {         this->m_n = data ;     }     CData(const CData& data)     {         this->m_n=data.m_n;     }     CData* operator=(const CData& data)     {         this->m_n = data.m_n;         return this;     }     bool operator==(const CData& data)     {         return this->m_n == data.m_n;     }     int m_n; }; //编辑时比较函数 bool vvv(CData v, CData n) {     if(n.m_n==v.m_n)     {         return true;     }     return false; } int _tmain(int argc, _TCHAR* argv[]) {     WX::CWXMemData<CData> m;     m.Add(CData(1));     m.Add(CData(2));     m.Add(CData(3));     CData n(4);     m.Edit(n, std::bind2nd(std::ptr_fun(vvv), CData(4)));     for(int i=0; i<m.size(); i++)         std::cout<< m.at(i).m_n << std::endl;     std::cout<<"....." << std::endl;     m.Edit(n, std::bind2nd(std::ptr_fun(vvv), CData(2)));     for(int i=0; i<m.size(); i++)         std::cout<< m.at(i).m_n << std::endl;     std::cout<<"....." << std::endl;     return 0; }


    最新回复(0)