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

📄 test_ycpp.cpp

📁 一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                typename slist_t::size_type index = 0;
                cout<<"please input index\n";   cin>>index;
                try
                {
                    typename slist_t::const_reference ref = sli.at( index );
                    cout<<"slist["<<index<<"] = "<<ref<<endl;
                }
                catch( std::out_of_range& e )
                {
                    cout<<e.what()<<endl;
                }
                break;
            }
            case 14:
            {
                slist_t sli1;
                sli.swap( sli1 );
                break;
            }
            case 15:
                sli.clear();
                break;
            case 16:
                sli.pop_front();
                break;
            case 17:
            {
                T in;  cout<<"please input a value\n";  cin>>in;
                sli.push_front( in );
                break;
            }
            case 18:
                sli.pop_back();
                break;
            case 19:
            {
                T in;  cout<<"please input a value\n";  cin>>in;
                sli.push_back( in );
                break;
            }
            case 20:
            {
                T in;
                typename slist_t::size_type n = 0;
                cout<<"please input new size\n";    cin>>n;
                cout<<"please input a value\n";     cin>>in;
                sli.resize( n, in );
                break;
            }
            case 21:
            {
                typename slist_t::size_type n = 0;
                cout<<"please input index\n";   cin>>n;
                sli.erase( sli.begin() + n );
                break;
            }
            case 22:
            {
                typename slist_t::size_type first = 0, last = 0;
                cout<<"please input first index\n"; cin>>first;
                cout<<"please input last index\n";  cin>>last;
                sli.erase( sli.begin() + first, sli.begin() + last );
                break;
            }
            case 23:
            {
                T in;
                typename slist_t::size_type n = 0;
                cout<<"please input index\n";   cin>>n;
                cout<<"please input a value\n"; cin>>in;
                sli.insert( sli.begin() + n, in );
                break;
            }
            case 24:
            {
                T in;
                typename slist_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;
                sli.insert( sli.begin() + i, n, in );
                break;
            }
            case 25:
            {
                size_t i = 0, n = 0;
                T in;
                youngcpp::vector<T> vec1;
                cout<<"please input index\n";   cin>>i;
                cout<<"please input count\n";   cin>>n;
                for( size_t x = 0; x < n; ++x )
                {
                    cout<<"please input value\n"; cin>>in;
                    vec1.push_back( in );
                }
                sli.insert( sli.begin() + i, vec1.begin(), vec1.end() );
                break;
            }
            case 26:
            {
                T in;
                typename slist_t::size_type n = 0;
                cout<<"please input count\n";   cin>>n;
                cout<<"please input a value\n"; cin>>in;
                sli.assign( n, in );
                break;
            }
            case 27:
            {
                size_t n = 0;
                T in;
                youngcpp::vector<T> vec1;
                cout<<"please input count\n";   cin>>n;
                for( size_t x = 0; x < n; ++x )
                {
                    cout<<"please input value\n"; cin>>in;
                    vec1.push_back( in );
                }
                sli.assign( vec1.begin(), vec1.end() );
                break;
            }
            case 28:
                 sli.reverse();
                 break;
            case 29:
            {
                char c;  cout<<"use function object (y/n)?\n";  cin>>c;
                if( 'y' == c )
                    sli.remove_if( rmv<T>() );
                else
                {
                    T in;  cout<<"please input value\n";  cin>>in;
                    sli.remove( in );
                }
                break;
            }
            case 30:
            {
                char c;  cout<<"use function object (y/n)?\n";  cin>>c;
                'y' == c ? sli.unique( std::not_equal_to<T>() ) : sli.unique();
                break;
            }
            case 31:
                break;
            case 32:
            {
                char c;  cout<<"use function object (y/n)?\n";  cin>>c;
                'y' == c ? sli.sort( std::greater<T>() ) : sli.sort();
                break;
            }
            case 33:
                std::copy( sli.begin(), sli.end(), ostream_iterator<T, char>(cout, "; ") );
                break;
            default:
                break;
        }

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

template< typename T >
void test_set()
{
    typedef  youngcpp::set<T>  set_t;
    typedef  youngcpp::multiset<T>  mset_t;
    set_t se;
    mset_t mse;
    int input = 0;

    while( 1 )
    {
        cout<<"Test set and multiset:\n"
            <<"  1: test begin\n"
            <<"  2: test end\n"
            <<"  3: test rbegin\n"
            <<"  4: test rend\n"
            <<"  5: test empty\n"
            <<"  6: test size\n"
            <<"  7: test max_size\n"
            <<"  8: test swap\n"
            <<"  9: test clear\n"
            <<" 10: test erase position\n"
            <<" 11: test erase range\n"
            <<" 12: test erase key\n"
            <<" 13: test insert value\n"
            <<" 14: test insert position\n"
            <<" 15: test insert range\n"
            <<" 16: test count\n"
            <<" 17: test find\n"
            <<" 18: test lower_bound\n"
            <<" 19: test upper_bound\n"
            <<" 20: test equal_range\n"
            <<" 21: test replace_key position\n"
            <<" 22: test replace_key key\n"
            <<" 23: print set or multiset\n"
            <<"  0: exit\n\n\n";

        cin>>input;

        switch( input )
        {
            case 0:
                return;
            case 1:
            {
                if( !multi )
                {
                    typename set_t::iterator itr = se.begin();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename mset_t::iterator itr = mse.begin();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 2:
            {
                if( !multi )
                {
                    typename set_t::iterator itr = se.end();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename mset_t::iterator itr = mse.end();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 3:
            {
                if( !multi )
                {
                    typename set_t::reverse_iterator ritr = se.rbegin();
                    cout<<&*ritr<<endl;
                }
                else
                {
                    typename mset_t::reverse_iterator ritr = mse.rbegin();
                    cout<<&*ritr<<endl;
                }
                break;
            }
            case 4:
            {
                if( !multi )
                {
                    typename set_t::reverse_iterator ritr = se.rend();
                    cout<<&*ritr<<endl;
                }
                else
                {
                    typename mset_t::reverse_iterator ritr = mse.rend();
                    cout<<&*ritr<<endl;
                }
                break;
            }
            case 5:
                if( !multi )
                    cout<<"empty is "<<(se.empty() ? "true!" : "false!")<<endl;
                else
                    cout<<"empty is "<<(mse.empty() ? "true!" : "false!")<<endl;
                break;
            case 6:
                cout<<"size = "<<( multi ? mse.size() : se.size() )<<endl;
                break;
            case 7:
                cout<<"max_size = "<<( multi ? mse.max_size() : se.max_size() )<<endl;
                break;
            case 8:
            {
                if( !multi )  {  set_t se1;  se.swap( se1 );  }
                else  {  mset_t mse1;  mse.swap( mse1 );  }
                break;
            }
            case 9:
                multi ? mse.clear() : se.clear();
                break;
            case 10:
            {
                T key;  cout<<"please input erase key\n";  cin>>key;
                multi ? mse.erase( mse.find(key) ) : se.erase( se.find(key) );
                break;
            }
            case 11:
            {
                T key1, key2;
                cout<<"please input first key\n";  cin>>key1;
                cout<<"please input last key\n";   cin>>key2;
                multi ? mse.erase( mse.find(key1), mse.find(key2) )
                      : se.erase( se.find(key1), se.find(key2) );
                break;
            }
            case 12:
            {
                T key;  cout<<"please input erase key\n";  cin>>key;
                cout<<"erase count = "<<( multi ?  mse.erase(key) : se.erase(key) )<<endl;
                break;
            }
            case 13:
            {
                T in;  cout<<"please input insert value\n";  cin>>in;
                if( multi )
                    cout<<"insert = "<<*( mse.insert(in) )<<endl;
                else
                    cout<<"insert "<<(se.insert(in).second ? "succeed\n" : "fail\n");
                break;
            }
            case 14:
            {
                T pos, in;
                cout<<"please input key of position\n";  cin>>pos;
                cout<<"please input insert value\n";     cin>>in;
                cout<<"insert = "<<*( multi ? mse.insert(mse.find(pos), in)
                                   : se.insert(se.find(pos), in) )<<endl;
                break;
            }
            case 15:
            {
                youngcpp::vector<T> vec1;
                T in;  size_t n;  cout<<"please input count\n";   cin>>n;
                for( size_t x = 0; x < n; ++x )
                {
                    cout<<"please input value\n";  cin>>in;
                    vec1.push_back( in );
                }
                multi ? mse.insert( vec1.begin(), vec1.end() )
                      : se.insert( vec1.begin(), vec1.end() );
                break;
            }
            case 16:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                cout<<"count = "<<( multi ? mse.count(key) : se.count(key) )<<endl;
                break;
            }
            case 17:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                cout<<"find = "<<( multi ? &*mse.find(key) : &*se.find(key) )<<endl;
                break;
            }
            case 18:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                cout<<"lower_bound = "<<( multi ? &*mse.lower_bound(key)
                                          : &*se.lower_bound(key) )<<endl;
                break;
            }
            case 19:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                cout<<"upper_bound = "<<( multi ? &*mse.upper_bound(key)
                                          : &*se.upper_bound(key) )<<endl;
                break;
            }
            case 20:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                if( multi )
                {
                    std::pair<typename mset_t::iterator,
                              typename mset_t::iterator> mpritr;
                    mpritr = mse.equal_range( key );
                    cout<<"first = "<<&*mpritr.first<<endl;
                    cout<<"second = "<<&*mpritr.second<<endl;
                }
                else
                {
                    std::pair<typename set_t::iterator,
                              typename set_t::iterator> pritr;
                    pritr = se.equal_range( key );
                    cout<<"first = "<<&*pritr.first<<endl;
                    cout<<"second = "<<&*pritr.second<<endl;
                }
                break;
            }
            case 21:
            {
                T oldk, newk;
                cout<<"please input old key\n";  cin>>oldk;
                cout<<"please input new key\n";  cin>>newk;
                if( multi )

⌨️ 快捷键说明

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