C++: prefer size_type to unsigned for indexes

* data/stack.hh (size_type): New, based on the container type.
This commit is contained in:
Akim Demaille
2018-08-12 14:34:30 +02:00
parent c2de9dafd1
commit e76245fcd9

View File

@@ -29,6 +29,7 @@ m4_define([b4_stack_define],
// Hide our reversed order. // Hide our reversed order.
typedef typename S::reverse_iterator iterator; typedef typename S::reverse_iterator iterator;
typedef typename S::const_reverse_iterator const_iterator; typedef typename S::const_reverse_iterator const_iterator;
typedef typename S::size_type size_type;
stack () stack ()
: seq_ () : seq_ ()
@@ -36,7 +37,7 @@ m4_define([b4_stack_define],
seq_.reserve (200); seq_.reserve (200);
} }
stack (unsigned n) stack (size_type n)
: seq_ (n) : seq_ (n)
{} {}
@@ -44,7 +45,7 @@ m4_define([b4_stack_define],
/// ///
/// Index 0 returns the topmost element. /// Index 0 returns the topmost element.
T& T&
operator[] (unsigned i) operator[] (size_type i)
{ {
return seq_[seq_.size () - 1 - i]; return seq_[seq_.size () - 1 - i];
} }
@@ -53,7 +54,7 @@ m4_define([b4_stack_define],
/// ///
/// Index 0 returns the topmost element. /// Index 0 returns the topmost element.
const T& const T&
operator[] (unsigned i) const operator[] (size_type i) const
{ {
return seq_[seq_.size () - 1 - i]; return seq_[seq_.size () - 1 - i];
} }
@@ -69,7 +70,7 @@ m4_define([b4_stack_define],
} }
void void
pop (unsigned n = 1) pop (size_type n = 1)
{ {
for (; n; --n) for (; n; --n)
seq_.pop_back (); seq_.pop_back ();
@@ -81,7 +82,7 @@ m4_define([b4_stack_define],
seq_.clear (); seq_.clear ();
} }
typename S::size_type size_type
size () const size () const
{ {
return seq_.size (); return seq_.size ();
@@ -111,20 +112,21 @@ m4_define([b4_stack_define],
class slice class slice
{ {
public: public:
slice (const S& stack, unsigned range) typedef typename S::size_type size_type;
slice (const S& stack, size_type range)
: stack_ (stack) : stack_ (stack)
, range_ (range) , range_ (range)
{} {}
const T& const T&
operator [] (unsigned i) const operator[] (size_type i) const
{ {
return stack_[range_ - i]; return stack_[range_ - i];
} }
private: private:
const S& stack_; const S& stack_;
unsigned range_; size_type range_;
}; };
]]) ]])