C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[75431] Re:Re:TList의 람다식 검색
[] 2733 읽음    2019-05-28 10:09

STL을 이용한 템플릿 클래스를 만드는게 정답이겠군요.
답변 감사합니다. ~

빌더(TWx) 님이 쓰신 글 :
: 배트맨 님이 쓰신 글 :
: : 최근에 C#을 C++로 변환하는 프로젝트를 진행중입니다.
: :
: : 혹시 C#에서의 Lambda 식 유사한 지원이 가능할 까요?
: :
: : 예를 들면 C#에서는
: : return A.Find(x => X.Name == "AA");
: :
: : 이렇게 하면 멤버가 가지고 있는 이름과 일치하는 항목을 리턴합니다.
: :
: : 이런 것을 TList를 사용해서 구현하려고 하는데..
: :
: : for (int i=0; i<List->Count; i++)
: : {
: :    if (List->Items[i]->Name == "AA")
: :      return List->Items[i];
: : }
: : return NULL;
: :
: : 검색을 위해서는 이런 형식의 for 문을 돌려야만 하나요?
: :
: :
:
:
:
: 답변:
:
:
: TList는 C++ 클래스가 아니고 델파이 파스칼 언어로 만들어 놓은 클래스에 불과해서
: Sort() 가 아니면 람다를 사용할 수 없고...
:
: Sort() 메소드를 이용할 때도 Comparer가 정의되어 있어야만 합니다.
:
:
: 델파이 파스칼 랭귀지는 C# 보다도 언어가 초보적인 수준 밖에 안됍니다.
:
:
: C#언어 역시 Java와 마찬가지로 C++ 컨셉을 차용해서 만들어진 언어라 람다 사용이 자유롭지만
: this, 레퍼런스 등의 Capture 기능 등 C++ 처럼 입맛대로 람다를 디테일하게 콘트롤 할 수 있는 기능을 갖고 있는 건 아니고
:
: C#은 그대신 간결하고 편리하게 사용할 수 있는 쪽으로 언어가 초점이 맞추어져 있습니다.
:
:
:
: 자유롭게 구사할 수 있는 언어가 파스칼 밖에 없다면 모를까
: C++ 사용하면서 TList, TStringList, TArray 같은 효용성 없는 델파이 클래스를 이용할 필요가 전혀 없습니다
: 코드제네레이터에 의해서 옵티마이징이 드라이브 될 때도 유리할 게 없지요.
:
: STL 이용해서 프로그래밍 하세요.
:
:
:
: 아래와 같이 STL 이용하면 모든 컨테이너에 대해서 람다를 자유롭게 사용할 수 있습니다.
:
: #include <string>
: #include <list>
: #include <algorithm>
:
: class Data
: {
: public:
:    std::string Name;
: };
:
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:    std::list< Data > l;
:    l.push_back( Data{"hello"} );
:    l.push_back( Data{"world"} );
: 
:    auto it = std::find_if( l.begin(), l.end(), [](auto& e) { return e.Name == "world";} );
: 
:    if ( it != l.end() )
:       Caption = (*it).Name.c_str();
: }
: 
: 

:
:
: rad studio 10.3.1 C++ 17 컴파일러 이용.
:
:

+ -

관련 글 리스트
75429 TList의 람다식 검색 배트맨 2504 2019/05/27
75430     Re:TList의 람다식 검색 빌더(TWx) 2852 2019/05/28
75431         Re:Re:TList의 람다식 검색 2733 2019/05/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.