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

📄 test_ycpp.cpp

📁 一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                {
                    typename mset_t::iterator itr = mse.find( oldk );
                    if( itr != mse.end() )
                    {
                        mse.replace_key( itr, newk );
                        cout<<"position = "<<*itr<<endl;
                    }
                }
                else
                {
                    typename set_t::iterator itr = se.find( oldk );
                    if( se.replace_key(itr, newk) )
                        cout<<"position = "<<*itr<<endl;
                }
                break;
            }
            case 22:
            {
                T oldk, newk;
                cout<<"please input old key\n";  cin>>oldk;
                cout<<"please input new key\n";  cin>>newk;
                if( multi )
                    mse.replace_key( oldk, newk );
                else
                    se.replace_key( oldk, newk );
                break;
            }
            case 23:
                multi ? std::copy( mse.begin(), mse.end(),
                              ostream_iterator<T, char>(cout, "; ") )
                      : std::copy( se.begin(), se.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_map()
{
    typedef  youngcpp::map<T, T>  map_t;
    typedef  youngcpp::multimap<T, T>  mmap_t;
    map_t mp;
    mmap_t mmp;
    int input = 0;

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

        cin>>input;

        switch( input )
        {
            case 0:
                return;
            case 1:
            {
                if( multi )
                {
                    typename mmap_t::iterator itr = mmp.begin();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename map_t::iterator itr = mp.begin();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 2:
            {
                if( multi )
                {
                    typename mmap_t::iterator itr = mmp.end();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename map_t::iterator itr = mp.end();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 3:
            {
                if( multi )
                {
                    typename mmap_t::const_iterator itr = mmp.begin();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename map_t::const_iterator itr = mp.begin();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 4:
            {
                if( multi )
                {
                    typename mmap_t::const_iterator itr = mmp.end();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename map_t::const_iterator itr = mp.end();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 5:
            {
                if( multi )
                {
                    typename mmap_t::reverse_iterator itr = mmp.rbegin();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename map_t::reverse_iterator itr = mp.rbegin();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 6:
            {
                if( multi )
                {
                    typename mmap_t::reverse_iterator itr = mmp.rend();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename map_t::reverse_iterator itr = mp.rend();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 7:
            {
                if( multi )
                {
                    typename mmap_t::const_reverse_iterator itr = mmp.rbegin();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename map_t::const_reverse_iterator itr = mp.rbegin();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 8:
            {
                if( multi )
                {
                    typename mmap_t::const_reverse_iterator itr = mmp.rend();
                    cout<<&*itr<<endl;
                }
                else
                {
                    typename map_t::const_reverse_iterator itr = mp.rend();
                    cout<<&*itr<<endl;
                }
                break;
            }
            case 9:
                if( !multi )
                    cout<<"empty is "<<(mp.empty() ? "true!" : "false!")<<endl;
                else
                    cout<<"empty is "<<(mmp.empty() ? "true!" : "false!")<<endl;
                break;
            case 10:
                cout<<"size = "<<( multi ? mmp.size() : mp.size() )<<endl;
                break;
            case 11:
                cout<<"max_size = "<<( multi ? mmp.max_size() : mp.max_size() )<<endl;
                break;
            case 12:
            {
                if( !multi )  {  map_t mp1;  mp.swap( mp1 );  }
                else  {  mmap_t mmp1;  mmp.swap( mmp1 );  }
                break;
            }
            case 13:
                multi ? mmp.clear() : mp.clear();
                break;
            case 14:
            {
                T key;  cout<<"please input erase key\n";  cin>>key;
                multi ? mmp.erase( mmp.find(key) ) : mp.erase( mp.find(key) );
                break;
            }
            case 15:
            {
                T key1, key2;
                cout<<"please input first key\n";  cin>>key1;
                cout<<"please input last key\n";   cin>>key2;
                multi ? mmp.erase( mmp.find(key1), mmp.find(key2) )
                      : mp.erase( mp.find(key1), mp.find(key2) );
                break;
            }
            case 16:
            {
                T key;  cout<<"please input erase key\n";  cin>>key;
                cout<<"erase count = "<<( multi ?  mmp.erase(key) : mp.erase(key) )<<endl;
                break;
            }
            case 17:
            {
                T in;  cout<<"please input insert value\n";  cin>>in;
                if( multi )
                {
                    typedef  typename mmap_t::value_type  value_t;
                    mmp.insert( value_t(in, in) );
                }
                else
                {
                    typedef  typename map_t::value_type  value_t;
                    mp.insert( value_t(in, in) );
                }
                break;
            }
            case 18:
            {
                T pos, in;
                cout<<"please input key of position\n";  cin>>pos;
                cout<<"please input insert value\n";     cin>>in;
                if( multi )
                {
                    typedef  typename mmap_t::value_type  value_t;
                    mmp.insert( mmp.find(pos), value_t(in, in) );
                }
                else
                {
                    typedef  typename map_t::value_type  value_t;
                    mp.insert( mp.find(pos), value_t(in, in) );
                }
                break;
            }
            case 19:
            {
                break;
            }
            case 20:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                cout<<"count = "<<( multi ? mmp.count(key) : mp.count(key) )<<endl;
                break;
            }
            case 21:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                cout<<"find = "<<( multi ? &*mmp.find(key) : &*mp.find(key) )<<endl;
                break;
            }
            case 22:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                cout<<"lower_bound = "<<( multi ? &*mmp.lower_bound(key)
                                          : &*mp.lower_bound(key) )<<endl;
                break;
            }
            case 23:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                cout<<"upper_bound = "<<( multi ? &*mmp.upper_bound(key)
                                          : &*mp.upper_bound(key) )<<endl;
                break;
            }
            case 24:
            {
                T key;  cout<<"please input key\n";  cin>>key;
                if( multi )
                {
                    std::pair<typename mmap_t::iterator,
                              typename mmap_t::iterator> mpritr;
                    mpritr = mmp.equal_range( key );
                    cout<<"first = "<<&*mpritr.first<<endl;
                    cout<<"second = "<<&*mpritr.second<<endl;
                }
                else
                {
                    std::pair<typename map_t::iterator,
                              typename map_t::iterator> pritr;
                    pritr = mp.equal_range( key );
                    cout<<"first = "<<&*pritr.first<<endl;
                    cout<<"second = "<<&*pritr.second<<endl;
                }
                break;
            }
            case 25:
            {
                T oldk, newk;
                cout<<"please input old key\n";  cin>>oldk;
                cout<<"please input new key\n";  cin>>newk;
                if( multi )
                {
                    typename mmap_t::iterator itr = mmp.find( oldk );
                    if( itr != mmp.end() )
                    {
                        mmp.replace_key( itr, newk );
                        cout<<"position = "<<(itr->first)<<endl;
                    }
                }
                else
                {
                    typename map_t::iterator itr = mp.find( oldk );
                    if( mp.replace_key(itr, newk) )
                        cout<<"position = "<<(itr->first)<<endl;
                }
                break;
            }
            case 26:
            {
                T oldk, newk;
                cout<<"please input old key\n";  cin>>oldk;
                cout<<"please input new key\n";  cin>>newk;
                if( multi )
                    mmp.replace_key( oldk, newk );
                else
                    mp.replace_key( oldk, newk );
                break;
            }
            case 27:
            {
                if( multi )
                {
                    typename mmap_t::iterator b = mmp.begin();
                    for( ; b != mmp.end(); ++b )
                        cout<<"first: "<<( b->first )
                            <<", second: "<<( b->second )<<endl;
                }
                else
                {
                    typename map_t::iterator b = mp.begin();
                    for( ; b != mp.end(); ++b )
                        cout<<"first: "<<( b->first )
                            <<", second: "<<( b->second )<<endl;
                }
                break;
            }
            default:
                break;
        }

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

⌨️ 快捷键说明

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