빌더님 도움 많이 받고 있는 눈팅이 인데요
벡터일 때는 stl을 어떤식으로 이용해야 하는지
그리고 stl 책 추천 좀 부탁 드립니다
빌더(TWx) 님이 쓰신 글 :
: gksqjs94 님이 쓰신 글 :
: : for(int i = 10; i> -11; i--)
: : {
: : TDateTime day = Now();
: : day = IncYear(day,-i);
: : Year->Items->Add(day.FormatString("yyyy"));
: : }
: : Year->ItemIndex=10;
: :
: :
: : ... 이렇게 하니까 됐네요
: :
: :
: :
: : gksqjs94 님이 쓰신 글 :
: : : 안녕하세요
: : : 제가 하고싶은건 지금 년도 에서 1~10 년 전이랑 1~10년후 까지 하나의 콤보박스에 넣고 현재 년도를 기본인덱스로 설정하고싶어요.
: : :
: : : int j = 0;
: : : for(int i = 1; i< 22; i++)
: : : {
: : : TDateTime day = Now();
: : : TDateTime day2 =Now();
: : : if(i<11)
: : : {
: : : day = IncYear(day,-i);
: : : Year->Items->Add(day.FormatString("yyyy"));
: : : }
: : : else
: : : {
: : : day2 = IncYear(day2,j);
: : : Year->Items->Add(day2.FormatString("yyyy"));
: : : j++;
: : : }
: : : }
: : : 이렇게 짜니까 들어가긴하는데 코드도 더러워보이고 딱봐도 뭔가 어거지로 맞춘듯한 느낌이들어요 ..ㅠ
: : : 어떻게 하면 깔끔히 짤수 있을까요 ?
: : :
: : : ps .그리고 저렇게 넣으면 2009년부터 2019년까지 아래에서 위로 올라가고 2020년부터 다시 2009년부터 아래로 써지더라구요
: : : 위에 한줄은 제가 읽어도 이해가 잘되지않네요..
: : :
:
:
:
: 답변:
:
:
: 아래와 같이 헤더 포함하고... C++17 테크닉 이용해서 간단하게 구현할 수 있지요.
: std::stringstream, std::generate_n, std::string은 STL template으로 정의되어 있음.
:
:
: #include <algorithm>
: #include <sstream>
: #include <string>
: using namespace std;
: using OI = std::ostream_iterator< WORD >;
:
:
: SYSTEMTIME dt; GetLocalTime(&dt);
: stringstream ss;
: generate_n((dt.wYear -= 10, OI(ss, "\n")), 21, [&dt]() { return dt.wYear++;});
:
: ComboBox1->Items->Text = ss.str().c_str();
: ComboBox1->ItemIndex = 10;
:
:
: 소스코드가 상당히 간단한데, 굳이 설명을 하자면...
:
: 현재 연도 기준으로 +- 10년을 사용하므로... 도합 21개의 Item이 사용되는 거고...
: TComboBox의 ItemIndex는 zero 베이스 이므로... 현재 연도 인덱스는 10이 되고.
:
: std::stringstream은 Container가 아닌 plain 스트림 클래스이므로...
: back_inserter 대신, std::ostream_iterator<> Iterator를 사용해야 하고.
:
: VCL 프레임웍이 파스칼이 아닌 C++로 구현되어 있으면 5번 라인은 전혀 필요없으나
: VCL 프레임웍이 파스칼로 구현되어 있기 때문에 어쩔수 없이 사용돼야 하고.
:
: C++17 테크닉 이용해서 VCL 프레임웍을 구현하면, 파스칼로 구현되어 있는 것 보다
: 3분의1로 크기를 확 줄여서 더 작고 효율적인 프레임웍 구현이 가능할 텐데...
:
: 지금까지 엠바 돌아가는 꼬라지를 보아서는 의미 없는 기대.
:
:
: 델파이 프레임웍에 의존성을 갖고있는 이와 같은 기형적인 구조에서는...
: C++20, C++24가 나온다고 하더라도...
:
: module, concept, range 등의 C++ 랭귀지 파워를 프레임웍 레벨에서 써 먹을 수 없는 구조
:
: