Skip to content
DarkKaiser의 블로그
DarkKaiser의 블로그
  • 개발 관련 자료(노션)
  • Raspberry Pi(노션)
  • WD My Cloud(노션)
  • GitHub
DarkKaiser의 블로그

for each

DarkKaiser, 2010년 5월 10일2023년 9월 6일

참고 : Vector Container Iterating 속도 비교(http://npteam.net/775)

VS2005부터는 for each, in 키워드를 지원한다.
for each 문은 C#이나 JAVA 5 버전부터 지원하는 키워드이나 VS2005부터 지원한다. C++ 표준은 아직 아니고 MS Specific 이다.
MS의 for each 문은 향상된 for 문으로 STL이나 CLR의 Collection을 지원한다. 하지만 안타깝게도 VS2005부터 사용되는 ATL Collection Classes 는 지원하지 않는다.
그래서 Native C++을 사용한다면 STL에서 밖에 사용하지 못 할 것 같다. 다음은 stl에서 사용 예이다.

[std::vector 사용 예]

#pragma region std::vector
// for_each_stl_2.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
using namespace std;

int main() {
  int retval = 0;

  vector<int> col(3);
  col[0] = 10;
  col[1] = 20;
  col[2] = 30;

  for each( const int& c in col )
    retval += c;

  cout << "retval: " << retval << endl;
}
#pragma endregion std::vector

[std::map 사용 예]

#pragma region std::map
// for_each_stl.cpp
// compile with: /EHsc
#include <map>
#include <iostream>
using namespace std;

int main() 
{
  int retval  = 0;
  map<const char*, int> months;

  months["january"] = 31;
  months["february"] = 28;
  months["march"] = 31;
  months["april"] = 30;
  months["may"] = 31;
  months["june"] = 30;
  months["july"] = 31;
  months["august"] = 31;
  months["september"] = 30;
  months["october"] = 31;
  months["november"] = 30;
  months["december"] = 31;

  map<const char*, int> months_30;

  for each( pair<const char*, int> c in months )
    if ( c.second == 30 )
       months_30[c.first] = c.second;

  for each( pair<const char*, int> c in months_30 )
    retval++;

  cout << "Months with 30 days = " << retval << endl;
}
#pragma endregion std::map
C/C++/VC++ for each

글 내비게이션

Previous post
Next post

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • AssertJ 소개testCompile ‘org.assertj:assertj-core:3.6.2’ 2017년 9월 14일
  • 자주 사용되는 Lombok 어노테이션 2017년 9월 14일
  • 유니코드 #3 2017년 9월 14일
  • 유니코드 #2 2017년 9월 14일
  • 유니코드 #1 2017년 9월 14일

최신 댓글

    카테고리

    • 개인 자료 (1)
      • 일기 (1)
    • 주절주절 (7)
    • 프로그래밍 갤러리 (16)
    • 프로그래밍 언어 (186)
      • Java (29)
      • C/C++/VC++ (114)
      • C# (11)
      • Visual Basic (6)
      • 안드로이드 (9)
      • Objective-C (5)
      • JavaScript (4)
      • JSP/Servlet (2)
      • Python (4)
      • 어셈블러 (1)
    • 개발++ (44)
      • Book (11)
        • Joel On Software (10)
      • 프로젝트 관리 (6)
      • Maven (1)
      • 디버깅 (1)
      • DirectX (1)
      • Silverlight (1)
      • RESTful (1)
      • Hacking (1)
      • WDM (4)
      • VoIP (5)
      • 기타 (1)
    • 개발 도구 (15)
      • eclipse (14)
      • Sublime Text (1)
    • 네트워크 (7)
    • 설치 및 배포 (7)
      • InstallShield (2)
      • NSIS (4)
    • 버전 관리 (9)
      • Git (2)
      • CVS (2)
      • Subversion (5)
    • 데이터베이스 (7)
      • Oracle (3)
      • Sybase (2)
      • MS-SQL (2)
    • 단위테스트 (3)
      • JUnit (1)
      • NUnit (2)
    • 버그추적시스템 (2)
      • mantis (2)
    • 운영체제 (7)
      • Windows (5)
      • 리눅스 (2)
    • WAS (3)
      • WebLogic (3)
    • 디자인패턴 (1)
    • 디지털 이미지 프로세싱 (16)

    태그

    application C++ CI CreateFile CruiseControl.NET Effective C++ FileOutputStream getProperty HAL Hashtable HEL IE InvalidateRect iterator Network POST PRODUCTION_MODE RandomAccessFile request RichEditCtrl tlb Trayicon UpdateWindow USB VC Vector WTP 네트워크 리치에디트컨트롤 매핑모드 메모리구별법 면접 문서화 주석 문자열 분리 변환 사설 IP 실행파일 은행 인코딩 자리비움 투명 트레이아이콘 포앵카레 폰트 확장자

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org
    ©2026 DarkKaiser의 블로그 | WordPress Theme by SuperbThemes