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