私は以下のコードを含むC++のプログラムを持っています。私はこのようなイテレータからtimeval
構造体のメンバーにアクセスするかどうかを知りたい:C++プログラム:キーが名前と3つの他のパラメータであるマップ
time_iter->second.tv_sec
が正しいかではありません。
static std::map<std::string,struct timeval> name_time_map;
std::map<std::string,struct timeval>::iterator time_iter;
time_iter = name_time_map.find(name);
if (time_iter == name_time_map.end()) {
gettimeofday(&tvPrev, NULL);
name_time_map[name]=tvPrev;
}
else {
print("what inserted values have");
gettimeofday(&tvCurrent, NULL);
diff =
(tvCurrent.tv_usec + 1000000 * tvCurrent.tv_sec) -
(time_iter->second.tv_usec + 1000000 * time_iter->second.tv_sec);
tvDiff.tv_sec = diff/1000000;
tvDiff.tv_usec = diff % 1000000; // micro seconds
}
私の懸念は、time_iter->second.tv_sec
を使用して挿入された値にアクセスすると、所定の構造struct timeval
からsecond
ポイントと仮定許されないことです。
テストしましたか?それは動作しましたか? –
いいえ、私はそれをテストしていません。私はもっと理解するために私のコンテストをここに紹介したかったのです。あるいは、イテレータを使ってあらかじめ定義された構造体メンバにアクセスする他の方法がありますか? – user1044923
テストとは何を意味するのですか?テストする前にここで質問すると、不必要な質問がたくさんあります。 –