Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> foreach в c++ 
:(
    Опции темы
Хоббит
Дата 12.3.2011, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



c++, linux

Есть ли возможность создать массив на лету и тут же его перебрать? Что то вроде.

foreach (string str in array<string>("abc", "def")) {
  cout << str;
}

Возможно с использование boost.
PM MAIL   Вверх
mes
Дата 12.3.2011, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



некоторые компиляторы уже вроде поддерживают range-based loop

Добавлено через 1 минуту и 41 секунду
другими словами  посмотрите свежую версию  gcc.. в ней такое возможно.. 


--------------------
PM MAIL WWW   Вверх
alexvs11
Дата 12.3.2011, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 6
Всего: 10



Код

    std::vector<std::string> v{"hello","world","!"};
    BOOST_FOREACH( std::string s, v )
    {
        std::cout << s << " ";
    }


Добавлено через 1 минуту и 32 секунды
ниче новее вроде не работает smile

Добавлено через 2 минуты и 1 секунду
ну можно конечно лямбду приплести
PM MAIL   Вверх
boostcoder
Дата 13.3.2011, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  12.3.2011,  23:46 Найти цитируемый пост)
некоторые компиляторы уже вроде поддерживают range-based loop

пока что только gcc-4.6.x
и то, сильно больше интеллекта в отличие от boost::for_each
PM WWW   Вверх
volatile
Дата 13.3.2011, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



В msvs венде, кажется начиная еще с vc2005 (не уверен насчет 2005, но в 2008 точно), можно писать так:
Код

char * t []= { "hello","world","!" };
for each( char * str in t )
    std::cout << str << " " ;

STL-овские создать на лету вроде нельзя, но перебирать их for each конечно можно.
Все это без /clr, то есть чистый проект на с++ (без .net) smile 
хотя я так почему-то не пишу...
PM MAIL   Вверх
alexvs11
Дата 13.3.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 6
Всего: 10



Цитата(volatile @  13.3.2011,  09:23 Найти цитируемый пост)
for each( char * str in t )    std::cout << str << " " ;

O_o
чо
PM MAIL   Вверх
volatile
Дата 13.3.2011, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(alexvs11 @  13.3.2011,  12:15 Найти цитируемый пост)
чо 


alexvs11, это вопрос, или междометие?
PM MAIL   Вверх
boostcoder
Дата 13.3.2011, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(volatile @  13.3.2011,  09:23 Найти цитируемый пост)
for each( char * str in t )

это макрос какой-то?
покажи его.
PM WWW   Вверх
volatile
Дата 13.3.2011, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(boostcoder @  13.3.2011,  19:01 Найти цитируемый пост)
это макрос какой-то?
покажи его. 


boostcoder, это не макрос.
Как показать? картинку с экрана приляпать чтоли?
PM MAIL   Вверх
mes
Дата 13.3.2011, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  13.3.2011,  18:01 Найти цитируемый пост)
это макрос какой-то?

нет эта фича студийного компилятора.. 


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 13.3.2011, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  13.3.2011,  19:09 Найти цитируемый пост)
эта фича студийного компилятора..

понятно smile

PM WWW   Вверх
mes
Дата 13.3.2011, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(volatile @  13.3.2011,  18:09 Найти цитируемый пост)
Как показать? картинку с экрана приляпать чтоли? 

лучше вот так : http://msdn.microsoft.com/en-us/library/ms...2(v=vs.80).aspx
smile


--------------------
PM MAIL WWW   Вверх
volatile
Дата 13.3.2011, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(mes @  13.3.2011,  19:12 Найти цитируемый пост)
лучше вот так : http://msdn.microsoft.com/en-us/library/ms...2(v=vs.80).aspx
 

ага, только там внизу написано
Compiler option: /clr

Это не совсем верно. На самом деле он и без этого работает, на чистом С++

PM MAIL   Вверх
rudvil
Дата 13.3.2011, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

Репутация: 2
Всего: 3



 smile 
для себя тоже добавил "in" удобней как-то  smile 
Код
#define in ,
#define _foreach BOOST_FOREACH
#define foreach(x) _foreach(x)

std::string str = "Hello";
foreach (char ch in str) {
  std::cout << ch;
}


Это сообщение отредактировал(а) rudvil - 13.3.2011, 19:27
--------------------
xor
PM MAIL Skype   Вверх
mes
Дата 13.3.2011, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(rudvil @  13.3.2011,  18:27 Найти цитируемый пост)
для себя тоже добавил "in" удобней как-то  

и сразу создали потенциальный конфликт..

Добавлено через 49 секунд
Цитата(volatile @  13.3.2011,  18:18 Найти цитируемый пост)
Это не совсем верно. На самом деле он и без этого работает, на чистом С++

ну значит msdn такая вот точная..  smile 


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1789 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.