• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:STLアルゴリズムについての質問)

STLアルゴリズムで月替わり要素の番号を取得する方法

このQ&Aのポイント
  • STLアルゴリズムを使用して、年月日データから月替わり要素の番号を取得する方法について教えてください。
  • vector<CString>に格納された年月日データから、月が切り替わる要素の番号を求めたいです。どのようなアルゴリズムを用いればよいでしょうか。
  • 年月日データのvectorから、月が変わる要素の番号を取得するためのSTLアルゴリズムについて教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#include <afxwin.h> #include <iostream> #include <vector> #include <numeric> #include <iterator> using namespace std; struct diff_fn { CString operator()(const CString& x, const CString& y) const { return x.Left(6) == y.Left(6) ? "x" : "o"; } }; int main() { vector<CString> vec; vector<CString> dif; vec.push_back("20071001"); vec.push_back("20071002"); vec.push_back("20071101"); vec.push_back("20071102"); vec.push_back("20071103"); vec.push_back("20071201"); vec.push_back("20071202"); vec.push_back("20071203"); vec.push_back("20080101"); vec.push_back("20080102"); vec.push_back("20080103"); adjacent_difference(vec.begin(), vec.end(), back_inserter(dif), diff_fn()); for ( int i = 0; i < dif.size(); ++i ) { if ( dif[i] == "o" ) cout << i << endl; } }

perl_2005
質問者

お礼

epistemeさんお世話になります。 ありがとうございます。 とてもじゃないですが今の自分にはこのような コードは書けませんし、アルゴリズムの組み立てもできません 二項演算子でoまたはxを返すは目から鱗です(書いてもらったら理解できてもインスピレーションが沸きませんでした) 重ね重ねですが、大変ありがとうございました。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

CStringの素性を補足してください。 また、 > 求めたい値 > 2, 5, 8 はどうやって出てきたのか、(見当は付きますが)念のため補足してください。

perl_2005
質問者

補足

jactaさんお世話になります >>CStringの素性を補足してください。 環境がVS2005MFCなのでCString型の文字変数を用いました >はどうやって出てきたのか 文字変数の4番目と5番目の値のことで、その値が前回の値と変化した場合、月替わりがあったと判断します、 EX: 0番目の要素20071001は2007年10月1日 1番目の要素20071002は2007年10月2日 2番目の要素20071101は2007年11月1日 以下省略 なので2番目の要素で月替わり発生という事です

関連するQ&A