⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_ycpp.cpp

📁 一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#ifdef _MSC_VER
    #pragma warning(disable:4100)
    #pragma warning(disable:4127)
    #pragma warning(disable:4267)
#endif

#include <stdlib.h>
#include <iostream>
#include <string>
#include <functional>
#include "../../young/youngcpp.hpp"

using std::cin;
using std::cout;
using std::endl;
using std::ostream_iterator;

//typedef  std::string  tstring;
typedef  youngcpp::shared_string< char, std::char_traits<char>,
                                  youngcpp::pool_allocator<char> >  tstring;

bool multi = false;

tstring animal[10] = { "dog", "pig", "cat", "cattle", "horse",
                       "leopard", "tiger", "bear", "wolf", "lion" };

int iarr[10] = { 10,20,30,40,50,60,70,80,90,100 };



template< typename T >
void test_vector()
{
    typedef  youngcpp::vector<T>  vector_t;
    int input = 0;
    vector_t vec;

    while( 1 )
    {
        cout<<"Test vector\n"
            <<"  1: test iterator begin\n"
            <<"  2: test const_iterator begin\n"
            <<"  3: test iterator end\n"
            <<"  4: test const_iterator end\n"
            <<"  5: test reverse_iterator rbegin\n"
            <<"  6: test const_reverse_iterator rbegin\n"
            <<"  7: test reverse_iterator rend\n"
            <<"  8: test const_reverse_iterator rend\n"
            <<"  9: test reference front\n"
            <<" 10: test const_reference front\n"
            <<" 11: test reference back\n"
            <<" 12: test const_reference back\n"
            <<" 13: test empty\n"
            <<" 14: test size\n"
            <<" 15: test space\n"
            <<" 16: test capacity\n"
            <<" 17: test max_size\n"
            <<" 18: test reference operator[]\n"
            <<" 19: test const_reference operator[]\n"
            <<" 20: test reference at\n"
            <<" 21: test const_reference at\n"
            <<" 22: test swap\n"
            <<" 23: test clear\n"
            <<" 24: test pop_back\n"
            <<" 25: test push_back\n"
            <<" 26: test reserve\n"
            <<" 27: test resize\n"
            <<" 28: test erase position\n"
            <<" 29: test erase range\n"
            <<" 30: test insert position\n"
            <<" 31: test insert position n\n"
            <<" 32: test insert range\n"
            <<" 33: test assign value\n"
            <<" 34: test assign range\n"
            <<" 35: print vector\n"
            <<"  0: exit\n\n\n";

        cin>>input;

        switch( input )
        {
            case 0:
                return;
            case 1:
            {
                typename vector_t::iterator itr = vec.begin();
                cout<<itr<<endl;
                break;
            }
            case 2:
            {
                typename vector_t::const_iterator itr = vec.begin();
                cout<<itr<<endl;
                break;
            }
            case 3:
            {
                typename vector_t::iterator itr = vec.end();
                cout<<itr<<endl;
                break;
            }
            case 4:
            {
                typename vector_t::const_iterator itr = vec.end();
                cout<<itr<<endl;
                break;
            }
            case 5:
            {
                typename vector_t::reverse_iterator ritr = vec.rbegin();
                cout<<ritr.base()<<endl;
                break;
            }
            case 6:
            {
                typename vector_t::const_reverse_iterator ritr = vec.rbegin();
                cout<<ritr.base()<<endl;
                break;
            }
            case 7:
            {
                typename vector_t::reverse_iterator ritr = vec.rend();
                cout<<ritr.base()<<endl;
                break;
            }
            case 8:
            {
                typename vector_t::const_reverse_iterator ritr = vec.rend();
                cout<<ritr.base()<<endl;
                break;
            }
            case 9:
            {
                typename vector_t::reference ref = vec.front();
                cout<<ref<<endl;
                break;
            }
            case 10:
            {
                typename vector_t::const_reference ref = vec.front();
                cout<<ref<<endl;
                break;
            }
            case 11:
            {
                typename youngcpp::vector<T>::reference ref = vec.back();
                cout<<ref<<endl;
                break;
            }
            case 12:
            {
                typename vector_t::const_reference ref = vec.back();
                cout<<ref<<endl;
                break;
            }
            case 13:
                cout<<"empty is "<<(vec.empty() ? "true!" : "false!")<<endl;
                break;
            case 14:
                cout<<"size = "<<vec.size()<<endl;
                break;
            case 15:
                cout<<"space = "<<vec.space()<<endl;
                break;
            case 16:
                cout<<"capacity = "<<vec.capacity()<<endl;
                break;
            case 17:
                cout<<"max_size = "<<vec.max_size()<<endl;
                break;
            case 18:
            {
                typename vector_t::size_type index = 0;
                cout<<"please input index\n";   cin>>index;
                typename vector_t::reference ref = vec[index];
                cout<<"vector["<<index<<"] = "<<ref<<endl;
                break;
            }
            case 19:
            {
                typename vector_t::size_type index = 0;
                cout<<"please input index\n";   cin>>index;
                typename vector_t::const_reference ref = vec[index];
                cout<<"vector["<<index<<"] = "<<ref<<endl;
                break;
            }
            case 20:
            {
                typename vector_t::size_type index = 0;
                cout<<"please input index\n";   cin>>index;
                try
                {
                    typename vector_t::reference ref = vec.at( index );
                    cout<<"vector["<<index<<"] = "<<ref<<endl;
                }
                catch( std::out_of_range& e )
                {
                    cout<<e.what()<<endl;
                }
                break;
            }
            case 21:
            {
                typename vector_t::size_type index = 0;
                cout<<"please input index\n";   cin>>index;
                try
                {
                    typename vector_t::const_reference ref = vec.at( index );
                    cout<<"vector["<<index<<"] = "<<ref<<endl;
                }
                catch( std::out_of_range& e )
                {
                    cout<<e.what()<<endl;
                }
                break;
            }
            case 22:
            {
                vector_t vec1;
                vec.swap( vec1 );
                break;
            }
            case 23:
                vec.clear();
                break;
            case 24:
                vec.pop_back();
                break;
            case 25:
            {
                T in;
                cout<<"please input a value\n"; cin>>in;
                vec.push_back( in );
                break;
            }
            case 26:
            {
                typename vector_t::size_type n = 0;
                cout<<"please input new capacity\n";    cin>>n;
                vec.reserve( n );
                break;
            }
            case 27:
            {
                T in;
                typename vector_t::size_type n = 0;
                cout<<"please input new size\n";    cin>>n;
                cout<<"please input a value\n";     cin>>in;
                vec.resize( n, in );
                break;
            }
            case 28:
            {
                typename vector_t::size_type n = 0;
                cout<<"please input index\n";   cin>>n;
                vec.erase( vec.begin() + n );
                break;
            }
            case 29:
            {
                typename vector_t::size_type first = 0, last = 0;
                cout<<"please input first index\n"; cin>>first;
                cout<<"please input last index\n";  cin>>last;
                vec.erase( vec.begin() + first, vec.begin() + last );
                break;
            }
            case 30:
            {
                T in;
                typename vector_t::size_type n = 0;
                cout<<"please input index\n";   cin>>n;
                cout<<"please input a value\n"; cin>>in;
                vec.insert( vec.begin() + n, in );
                break;
            }
            case 31:
            {
                T in;
                typename vector_t::size_type i = 0, n = 0;
                cout<<"please input index\n";   cin>>i;
                cout<<"please input count\n";   cin>>n;
                cout<<"please input a value\n"; cin>>in;
                vec.insert( vec.begin() + i, n, in );
                break;
            }
            case 32:
            {
                char c;
                typename vector_t::size_type i = 0, n = 0;
                T in;
                youngcpp::list<T> li;
                vector_t vec1;
                cout<<"use array (y/n)?\n";     cin>>c;
                cout<<"please input index\n";   cin>>i;
                cout<<"please input count\n";   cin>>n;
                if( 'y' == c )
                {
                    for( typename vector_t::size_type x = 0; x < n; ++x )
                    {
                        cout<<"please input value\n"; cin>>in;
                        vec1.push_back( in );
                    }
                    vec.insert( vec.begin() + i, vec1.begin(), vec1.end() );
                }
                else
                {
                    for( typename vector_t::size_type x = 0; x < n; ++x )
                    {
                        cout<<"please input value\n"; cin>>in;
                        li.push_back( in );
                    }
                    vec.insert( vec.begin() + i, li.begin(), li.end() );
                }
                break;
            }
            case 33:
            {
                T in;
                typename vector_t::size_type n = 0;
                cout<<"please input count\n";   cin>>n;
                cout<<"please input a value\n"; cin>>in;
                vec.assign( n, in );
                break;
            }
            case 34:
            {
                char c;
                typename vector_t::size_type n = 0;
                T in;
                youngcpp::list<T> li;
                vector_t vec1;
                cout<<"use array (y/n)?\n";     cin>>c;
                cout<<"please input count\n";   cin>>n;
                if( 'y' == c )
                {
                    for( typename vector_t::size_type x = 0; x < n; ++x )
                    {
                        cout<<"please input value\n"; cin>>in;
                        vec1.push_back( in );
                    }
                    vec.assign( vec1.begin(), vec1.end() );
                }
                else
                {
                    for( typename vector_t::size_type x = 0; x < n; ++x )
                    {
                        cout<<"please input value\n"; cin>>in;
                        li.push_back( in );
                    }
                    vec.assign( li.begin(), li.end() );
                }
                break;
            }
            case 35:
                std::copy( vec.begin(), vec.end(), ostream_iterator<T, char>(cout, "; ") );
                break;
            default:
                break;
        }

        cout<<endl<<"press any key to continue"<<endl;
        cin.get();
        cin.get();
    };
}

template< typename T >
void test_deque()
{
    typedef  youngcpp::deque<T>  deque_t;
    int input = 0;
    deque_t deq;

    while( 1 )
    {
        cout<<"Test deque:\n"
            <<"  1: test iterator begin\n"
            <<"  2: test const_iterator begin\n"
            <<"  3: test iterator end\n"
            <<"  4: test const_iterator end\n"
            <<"  5: test reverse_iterator rbegin\n"
            <<"  6: test const_reverse_iterator rbegin\n"
            <<"  7: test reverse_iterator rend\n"
            <<"  8: test const_reverse_iterator rend\n"
            <<"  9: test reference front\n"
            <<" 10: test const_reference front\n"
            <<" 11: test reference back\n"
            <<" 12: test const_reference back\n"
            <<" 13: test empty\n"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -