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