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