Re: passing vector as argument
"Alex Blekhman" <tkfx.REMOVE@yahoo.com> wrote in message
news:uNmd8KqpIHA.4376@TK2MSFTNGP06.phx.gbl...
"Ron Francis" wrote:
Having an obvious name may help, but in the end, the coder could call it
anything at all.
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 can see your point, and if the coder kept the same naming convention
throughout then I wouldn't have a problem.
I do find your second chunk of code as easy to read as the first and
personally would prefer it, but as others have mentioned, modern IDEs come
to the rescue with mouseovers.
I have never used std::map but I have to agree that typedefs make that look
more manageable.
Ron.