Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
1

Foreach

11.04.2014, 16:52. Показов 4225. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите как написать свой цикл foreach?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2014, 16:52
Ответы с готовыми решениями:

Replace_if и foreach
Есть такой код по приведению текста в нижний регистр и по удалению знаков препинания ...

tuple foreach
Взял за основу вот это ...

Foreach цикл и потоки
Список можно читать так: for(auto&pos:list) //bla-bla-bla Поток можно читать так: some_type...

Отличие итератора от foreach
Есть ли разница между циклами? std::vector<int> vec; vec.push_back(4); vec.push_back(5);...

11
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
11.04.2014, 16:56 2
В каком смысле свой?
C++
1
2
3
4
5
    int arr[10];
    for each (int &n in arr)
        n = 1;
    for each (int n in arr)
        std::cout << n << std::endl;
0
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
11.04.2014, 16:58 3
Думаю, по аналоге с этим:
C++
1
2
3
4
5
6
7
8
template<class InputIt, class UnaryFunction>
UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f)
{
    for (; first != last; ++first) {
        f(*first);
    }
    return f;
}
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
11.04.2014, 16:59  [ТС] 4
ну в стандартном for_each там

for_each(InputIterator first, InputIterator last, Function fn)

а меня такое не устраивает

хочу сделать вида foreach(char с in str)
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
11.04.2014, 17:02 5
Пусть а - контейнер, со всеми членами которого нужно произвести некоторое действие, то
C++
1
2
3
4
for(auto i: a)
{
    // тут некоторые действия с i...
}
0
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
11.04.2014, 17:04 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<class tp ,class fn>
void foreach(tp *begin, tp *end,fn fun)
{
    for (; begin != end; begin++)
        fun(*begin);
}
 
int main()
{
    int arr[10];
    foreach(std::begin(arr), std::end(arr), [](int &n){ n = 3; });
    foreach(std::begin(arr), std::end(arr), [](int n){ std::cout << n << std::endl; });
    system("pause");
}
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
11.04.2014, 17:04 7
Не надо извращаться. Нормальный foreach есть в С++11.
Если нельзя пользоваться 11м стандартом, можно использовать BOOST_FOREACH.
Если все-таки хочется задолбаться, то в этой теме я старался подробно расписать на примере написание такого макроса в несколько упрощенном виде: Хак препроцессора, объясните как работает
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.04.2014, 20:18 8
Цитата Сообщение от 0x10 Посмотреть сообщение
Нормальный foreach есть в С++11.
for может ? cм пост CheshireCat.

Цитата Сообщение от 0x10 Посмотреть сообщение
Если нельзя пользоваться 11м стандартом, можно использовать BOOST_FOREACH.
Кстати в Qt, тоже есть foreach
0
0x10
11.04.2014, 20:26
  #9

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
for может ?
Естественно. Обозвал его так следом за заголовком темы.

0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
11.04.2014, 20:51  [ТС] 10
Цитата Сообщение от Avazart Посмотреть сообщение
for может ? cм пост CheshireCat.
к сожалению, в XE5 при попытке компиляции такого кода ошибка
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
11.04.2014, 22:01 11
Цитата Сообщение от hiphone Посмотреть сообщение
хочу сделать вида foreach(char с in str)
Что, прямо в таком формате чтобы было? И зачем оно надо? Какая цель преследуется?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.04.2014, 22:16 12
В XE5 нет поддержки нового стандарта, зато должен работать BOOST_FOREACH (В XE3 работает)

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
#include <boost/foreach.hpp>
#define foreach BOOST_FOREACH
 
// ...
std::vector<myclass>v(10);
foreach( myclass& m, v)
{
   // ...
}
0
11.04.2014, 22:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2014, 22:16
Помогаю со студенческими работами здесь

реализация foreach в C++, другой синтсксис
нашел тут некоторое собрание библиотек на буст орг, там есть такая что содержет реализацию...

Скорость перебор вектора while/for/foreach
В php foreach для массива работает в 2 раза быстрее, чем перебор того же массива циклом while или...

Класс-функтор с использованием foreach и transform
Добрый вечер господа, Не считает правильно сумму. Выдает феерично большое число. Не подскажите в...

О "нестабильности" или "переполнении" цикла foreach
Здравствуйте, коллеги. Недавно коллега-программист сообщил мне страшную вещь: оказывается, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru