Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 549
#1

Foreach - C++

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

Здравствуйте, подскажите как написать свой цикл foreach?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 16:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Foreach (C++):

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

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

Скорость перебор вектора while/for/foreach - C++
В php foreach для массива работает в 2 раза быстрее, чем перебор того же массива циклом while или for. Нашел на одном сайте:Но это для...

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

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

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

11
Alex566
241 / 153 / 18
Регистрация: 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
DiffEreD
1432 / 769 / 95
Регистрация: 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
hiphone
13 / 13 / 3
Регистрация: 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
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,411
11.04.2014, 17:02 #5
Пусть а - контейнер, со всеми членами которого нужно произвести некоторое действие, то
C++
1
2
3
4
for(auto i: a)
{
    // тут некоторые действия с i...
}
0
Alex566
241 / 153 / 18
Регистрация: 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
0x10
2506 / 1684 / 253
Регистрация: 24.11.2012
Сообщений: 4,220
11.04.2014, 17:04 #7
Не надо извращаться. Нормальный foreach есть в С++11.
Если нельзя пользоваться 11м стандартом, можно использовать BOOST_FOREACH.
Если все-таки хочется задолбаться, то в этой теме я старался подробно расписать на примере написание такого макроса в несколько упрощенном виде: Хак препроцессора, объясните как работает
0
Avazart
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,376
Записей в блоге: 17
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
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 549
11.04.2014, 20:51  [ТС] #10
Цитата Сообщение от Avazart Посмотреть сообщение
for может ? cм пост CheshireCat.
к сожалению, в XE5 при попытке компиляции такого кода ошибка
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.04.2014, 22:01 #11
Цитата Сообщение от hiphone Посмотреть сообщение
хочу сделать вида foreach(char с in str)
Что, прямо в таком формате чтобы было? И зачем оно надо? Какая цель преследуется?
0
Avazart
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,376
Записей в блоге: 17
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2014, 22:16
Привет! Вот еще темы с ответами:

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

Обработка XML. Цикл foreach (XmlNode.) вложенный во внешний foreach - C#
Здравствуйте. Возникла проблема при обработке XML-файла (с помощью XMLDocument). В теме я новичок. Имеется XML файл такого типа: ...

Ошибка в foreach: foreach statement cannot operate on variables of type 'System.Collections.IEnumerator' - C#
using System; using System.Collections; namespace P { class Program { public static IEnumerator...

Нужен простой пример из Foreach в Parallel.Foreach - C#
Покажите любой простой пример из Foreach в Parallel.Foreach. Не могу до конца понять.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.