Форум программистов, компьютерный форум CyberForum.ru

Foreach - C++

Восстановить пароль Регистрация
 
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 541
11.04.2014, 16:52     Foreach #1
Здравствуйте, подскажите как написать свой цикл foreach?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 16:52     Foreach
Посмотрите здесь:

C# foreach
C# foreach
C++ Скорость перебор вектора while/for/foreach
foreach PHP
FOREACH PHP
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
11.04.2014, 16:56     Foreach #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;
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
11.04.2014, 16:58     Foreach #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;
}
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 541
11.04.2014, 16:59  [ТС]     Foreach #4
ну в стандартном for_each там

for_each(InputIterator first, InputIterator last, Function fn)

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

хочу сделать вида foreach(char с in str)
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
11.04.2014, 17:02     Foreach #5
Пусть а - контейнер, со всеми членами которого нужно произвести некоторое действие, то
C++
1
2
3
4
for(auto i: a)
{
    // тут некоторые действия с i...
}
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
11.04.2014, 17:04     Foreach #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");
}
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.04.2014, 17:04     Foreach #7
Не надо извращаться. Нормальный foreach есть в С++11.
Если нельзя пользоваться 11м стандартом, можно использовать BOOST_FOREACH.
Если все-таки хочется задолбаться, то в этой теме я старался подробно расписать на примере написание такого макроса в несколько упрощенном виде: Хак препроцессора, объясните как работает
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
11.04.2014, 20:18     Foreach #8
Цитата Сообщение от 0x10 Посмотреть сообщение
Нормальный foreach есть в С++11.
for может ? cм пост CheshireCat.

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

Не по теме:

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

hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 541
11.04.2014, 20:51  [ТС]     Foreach #10
Цитата Сообщение от Avazart Посмотреть сообщение
for может ? cм пост CheshireCat.
к сожалению, в XE5 при попытке компиляции такого кода ошибка
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.04.2014, 22:01     Foreach #11
Цитата Сообщение от hiphone Посмотреть сообщение
хочу сделать вида foreach(char с in str)
Что, прямо в таком формате чтобы было? И зачем оно надо? Какая цель преследуется?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2014, 22:16     Foreach
Еще ссылки по теме:

Java SE foreach
Foreach цикл и потоки C++
C# Нужен простой пример из Foreach в Parallel.Foreach

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
11.04.2014, 22:16     Foreach #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)
{
   // ...
}
Yandex
Объявления
11.04.2014, 22:16     Foreach
Ответ Создать тему
Опции темы

Текущее время: 02:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru