fork(1) download
  1. #include <list>
  2. #include <array>
  3. #include <set>
  4.  
  5. using namespace std;
  6. #define nullptr NULL
  7. template <typename T_>
  8. class square_list
  9. {
  10. public:
  11. typedef T_ value_type;
  12. typedef std::size_t size_type;
  13. typedef T_ & reference;
  14. typedef T_ const & const_reference;
  15. typedef T_ * pointer;
  16. typedef T_ const * const_pointer;
  17. typedef T_ * iterator;
  18. typedef T_ const * const_iterator;
  19. typedef std::ptrdiff_t difference_type;
  20.  
  21. typedef std::reverse_iterator<iterator> reverse_iterator;
  22. typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
  23.  
  24.  
  25.  
  26. //list<pair<iterator,unsigned> topLevel;
  27. list<value_type> data;
  28. //list<value_type,size_type> data;
  29. //int size;
  30.  
  31.  
  32. square_list() {}
  33. //square_list():data(list<value_type>()),size(0) {}
  34.  
  35. ~square_list(){}
  36.  
  37. bool empty(){
  38. if(data.size() == 0)
  39. return 1;
  40. else
  41. return 0;
  42. }
  43.  
  44. unsigned size()
  45. {
  46. return data.size();
  47. }
  48. typename list<value_type>::iterator begin()
  49. {
  50. return data.begin();
  51. }
  52. typename list<value_type>::iterator end()
  53. {
  54. return data.end();
  55. }
  56.  
  57.  
  58.  
  59. void erase(typename std::list<value_type>::iterator it)
  60. {
  61. data.erase(it);
  62. }
  63.  
  64. void insert(value_type val)
  65. {
  66. data.push_back(val);
  67. }
  68.  
  69. };
  70.  
  71. int main()
  72. {
  73. std::array<int,10> data = { 9, 10, 7, 8, 5, 6, 3, 4, 1, 2 };
  74. std::set<int> sortedData( data.begin(), data.end() );
  75.  
  76. square_list<int> sqi;
  77. for( auto datum=data.begin();datum!= data.end(); ++datum )
  78. sqi.insert( *datum );
  79.  
  80. // remove the data from the list in the scrambled order of the first vector.
  81. while( !sqi.empty() && !sortedData.empty() ) {
  82. size_t idx = rand() % sqi.size();
  83. auto sdLoc = sortedData.begin();
  84. advance(sdLoc,idx);
  85. auto sqLoc = sqi.begin();
  86. while( idx-- > 0 )
  87. ++sqLoc;
  88. sortedData.erase(sdLoc);
  89. //sqi.dump(std::cout);
  90. sqi.erase(sqLoc);
  91.  
  92. }
  93. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
Standard output is empty