- ベストアンサー
STLアルゴリズムで月替わり要素の番号を取得する方法
- STLアルゴリズムを使用して、年月日データから月替わり要素の番号を取得する方法について教えてください。
- vector<CString>に格納された年月日データから、月が切り替わる要素の番号を求めたいです。どのようなアルゴリズムを用いればよいでしょうか。
- 年月日データのvectorから、月が変わる要素の番号を取得するためのSTLアルゴリズムについて教えてください。
- みんなの回答 (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; } }
その他の回答 (1)
- jacta
- ベストアンサー率26% (845/3158)
CStringの素性を補足してください。 また、 > 求めたい値 > 2, 5, 8 はどうやって出てきたのか、(見当は付きますが)念のため補足してください。
補足
jactaさんお世話になります >>CStringの素性を補足してください。 環境がVS2005MFCなのでCString型の文字変数を用いました >はどうやって出てきたのか 文字変数の4番目と5番目の値のことで、その値が前回の値と変化した場合、月替わりがあったと判断します、 EX: 0番目の要素20071001は2007年10月1日 1番目の要素20071002は2007年10月2日 2番目の要素20071101は2007年11月1日 以下省略 なので2番目の要素で月替わり発生という事です
お礼
epistemeさんお世話になります。 ありがとうございます。 とてもじゃないですが今の自分にはこのような コードは書けませんし、アルゴリズムの組み立てもできません 二項演算子でoまたはxを返すは目から鱗です(書いてもらったら理解できてもインスピレーションが沸きませんでした) 重ね重ねですが、大変ありがとうございました。