Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Множества


Автор: Zerony 1.2.2011, 21:49
Всем привет. Никто не в курсе, есть ли в С++ множества, аналогичны как в Delphi? 

Нужен аналог такого выражения: Result:=Ch in ['+','-','*','/']
Оно написано в Delphi, хочу такое же на С++. 

Заранее спасибо. 

Автор: Фантом 1.2.2011, 22:31
Цитата(Zerony @  1.2.2011,  21:49 Найти цитируемый пост)
Нужен аналог такого выражения: Result:=Ch in ['+','-','*','/']
Оно написано в Delphi, хочу такое же на С++. 

В STL, в принципе, есть, но без необходимости, пожалуй, ими не стоит пользоваться (если все дело только в такой записи).

Автор: volatile 1.2.2011, 23:56
Если аналог приведенного выражения, то можно использовать strchr
Если не найдено вернет NULL, если найдено, указатель на символ.

Я правда не знаю что возвращает в делфи выражение Ch in ['+','-','*','/']
Если логическую единицу, то вот полный аналог:
Код

bool Result = !!strchr("+-*/", Ch );

Автор: alexvs11 2.2.2011, 00:24
Код

#include <set>
#include <algorithm>
#include <iostream>

char szArr[] = {'+','-','*','/'};

int main(){
  std::set<char> mSet( szArr, szArr+sizeof(szArr)/sizeof(szArr[0]) );
  char chSym = '-';
  if( mSet.end() != mSet.find( chSym ) ){
    std::cout << "ok" << std::endl;
  }else{
    std::cout << "wrong element" << std::endl;
  }
}


но не думаю, что это то, что вы ожидали smile 

Автор: Zerony 2.2.2011, 00:58
Всем спасибо. Все способы записал, опробую на практике! 

Автор: xvr 2.2.2011, 12:52
В С++ Builder есть реализация Delphi множеств в виде класса (Set из sysset.h)
Синтаксис конечно немного другой

Автор: taiven 5.2.2011, 03:06
Код

bool func(char ch)
{
    const std::string s("+-*/");
    return s.find(ch) != std::string::npos;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)