Сообщение Re[2]: range based for - первый/последний? от 14.03.2019 7:56
Изменено 14.03.2019 9:13 rg45
Re[2]: range based for - первый/последний?
Здравствуйте, B0FEE664, Вы писали:
M>>Для нового range-for'а есть какой-нибудь вариант?
BFE>Есть вот такой модный вариант, но он не то, что вы просите:
BFE>
Вот эта многоэтажность в условии глаз не радует совершенно. Зачем вообще здесь что-то выдумывать, когда все предельно просто:
Ну правда std::empty и std::front появляются только в С++17. Но их отсутствие восполняется элементарно, могу показать, если нужно.
M>>Для нового range-for'а есть какой-нибудь вариант?
BFE>Есть вот такой модный вариант, но он не то, что вы просите:
BFE>
BFE> if ( auto it = std::begin(v), itEnd = std::end(v); itEnd != it )
BFE> {
BFE> std::cout << *it;
BFE> for(++it; itEnd != it; ++it)
BFE> {
BFE> std::cout << ", " << *it;
BFE> }
BFE> }
BFE>
Вот эта многоэтажность в условии глаз не радует совершенно. Зачем вообще здесь что-то выдумывать, когда все предельно просто:
if (!std::empty(v))
{
std::cout << std::front(v);
for(auto it = std::begin(v) + 1; it != std::end(v); ++it)
{
std::cout << ", " << *it;
}
}
Ну правда std::empty и std::front появляются только в С++17. Но их отсутствие восполняется элементарно, могу показать, если нужно.
Re[2]: range based for - первый/последний?
Здравствуйте, B0FEE664, Вы писали:
M>>Для нового range-for'а есть какой-нибудь вариант?
BFE>Есть вот такой модный вариант, но он не то, что вы просите:
BFE>
Вот эта многоэтажность в условии глаз не радует совершенно. Зачем вообще здесь что-то выдумывать, когда все предельно просто:
Ну правда std::empty и std::front появляются только в С++17. Но их отсутствие легко восполняется, могу показать, если нужно.
M>>Для нового range-for'а есть какой-нибудь вариант?
BFE>Есть вот такой модный вариант, но он не то, что вы просите:
BFE>
BFE> if ( auto it = std::begin(v), itEnd = std::end(v); itEnd != it )
BFE> {
BFE> std::cout << *it;
BFE> for(++it; itEnd != it; ++it)
BFE> {
BFE> std::cout << ", " << *it;
BFE> }
BFE> }
BFE>
Вот эта многоэтажность в условии глаз не радует совершенно. Зачем вообще здесь что-то выдумывать, когда все предельно просто:
if (!std::empty(v))
{
std::cout << std::front(v);
for(auto it = std::begin(v) + 1; it != std::end(v); ++it)
{
std::cout << ", " << *it;
}
}
Ну правда std::empty и std::front появляются только в С++17. Но их отсутствие легко восполняется, могу показать, если нужно.