Сообщение Re[7]: range based for - первый/последний? от 13.03.2019 18:27
Изменено 13.03.2019 18:30 rg45
Re[7]: range based for - первый/последний?
Здравствуйте, Marty, Вы писали:
R>>Также он не подходит для lvalue-последовательностей, где один и тот же елемент может встретиться более одного раза.
M>Можно пример такого?
Пожалуйста. В этом примере ты проходишь по последовательности из десяти елементов и получаещь, что каждый элемент является и первым, и последним одновременно.
Только не придирайся, пожалуйта, к использованияю boost::adaptors::indirected — он использован исключительно ради упрощения примера. Использование адаптеров контейнеров давно уже не является прерогативой буста и пишется такой адаттор за считанные минуты в несколько строк.
https://ideone.com/YqTMaO
R>>Также он не подходит для lvalue-последовательностей, где один и тот же елемент может встретиться более одного раза.
M>Можно пример такого?
Пожалуйста. В этом примере ты проходишь по последовательности из десяти елементов и получаещь, что каждый элемент является и первым, и последним одновременно.
Только не придирайся, пожалуйта, к использованияю boost::adaptors::indirected — он использован исключительно ради упрощения примера. Использование адаптеров контейнеров давно уже не является прерогативой буста и пишется такой адаттор за считанные минуты в несколько строк.
https://ideone.com/YqTMaO
#include <iostream>
#include <vector>
#include <boost/range/adaptor/indirected.hpp>
int main()
{
std::cout << std::boolalpha;
int t = 42;
std::vector<const int*> v(10, &t);
const auto cont = v | boost::adaptors::indirected;
for (auto& a : cont)
{
auto first = &a == &cont.front();
auto last = &a == &cont.back();
std::cout << first << ", " << last << std::endl;
}
}
Re[7]: range based for - первый/последний?
Здравствуйте, Marty, Вы писали:
R>>Также он не подходит для lvalue-последовательностей, где один и тот же елемент может встретиться более одного раза.
M>Можно пример такого?
Пожалуйста. В этом примере ты проходишь по последовательности из десяти элементов и получаещь, что каждый элемент является и первым, и последним одновременно.
Только не придирайся, пожалуйта, к использованияю boost::adaptors::indirected — он использован исключительно ради упрощения примера. Использование адаптеров контейнеров давно уже не является прерогативой буста и пишется такой адаттор за считанные минуты в несколько строк.
https://ideone.com/YqTMaO
R>>Также он не подходит для lvalue-последовательностей, где один и тот же елемент может встретиться более одного раза.
M>Можно пример такого?
Пожалуйста. В этом примере ты проходишь по последовательности из десяти элементов и получаещь, что каждый элемент является и первым, и последним одновременно.
Только не придирайся, пожалуйта, к использованияю boost::adaptors::indirected — он использован исключительно ради упрощения примера. Использование адаптеров контейнеров давно уже не является прерогативой буста и пишется такой адаттор за считанные минуты в несколько строк.
https://ideone.com/YqTMaO
#include <iostream>
#include <vector>
#include <boost/range/adaptor/indirected.hpp>
int main()
{
std::cout << std::boolalpha;
int t = 42;
std::vector<const int*> v(10, &t);
const auto cont = v | boost::adaptors::indirected;
for (auto& a : cont)
{
auto first = &a == &cont.front();
auto last = &a == &cont.back();
std::cout << first << ", " << last << std::endl;
}
}