📄 test_ycpp.cpp
字号:
{
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 + -