2017-01-05 8 views
1

こんにちはを使用いけないと私はちょうど私は、このトピックの検索を試みたが、何も見つかりませんでした言及したいときに私の質問ので、ここでは、コードの行を無視しているようですここで私はタイムスタンプが更新されたリストを作成したいと思っていました。だから私はこれについてすべてを扱う小さなクラスを書いた。 (私は必要でないものを除外しました)C++は、私は、デバッガ

編集実際の機能は.cppファイル内にあります。これは実際に書いたものを参照するためだけの機能です。

#pragma once 
#include <chrono> 
#include <map> 

class TimeHandler 
{ 
public: 
    TimeHandler(); 
    ~TimeHandler(); 

    std::map<std::chrono::milliseconds, std::string> getTimeList(); 
    /*add a timepoint for the current time to the timelist*/ 
    void addTimePoint(std::string name); 
    /*print the timelist*/ 
    void print(); 
private: 
    std::map<std::chrono::milliseconds,std::string> timeList; 
}; 

void TimeHandler::addTimePoint(std::string name) 
{ 
    std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()); 
    timeList.insert(std::make_pair(ms, name)); 
    //std::cout << "\n adding"; 
} 

クラスは、説明を追加できる時間イベントだけを処理します。

問題が発生しました。他の関数にオブジェクトのポインタを与えて、それらの開始点と終了点でaddTimePoint関数を呼び出す。 しかし、すべての時間イベントはありません。私がaddTimePointとデバッグにブレークポイントを置くと、すべてが正常に動作します。また、挿入後にstd :: coutを追加すると)。 しかし、私はstd :: coutを持っていないか、デバッガを使うとマップにすべてを入れることはできません。

誰かが私を助けることができたら、私は問題が起きていると思われるアイデアが終わったところです。

私の悪い英語の私を判断しないでください、私はまだ学んでいます。

+7

ベクトルを使用しています。 –

+3

おそらくコードが非常に速く、多くのラベルがマップの同じミリ秒の値で終了するため、マップは同じバケットを複数回上書きします。したがって、あなたは価値が "欠けている"と考えています。ピカード:「しばらく私を裏切ろうと思った。データ:「私は10E-9ナノ秒の間、それを考慮しました。それはアンドロイドにとっては長い時間です」 ;) – BitTickler

+0

あなたはマルチスレッド環境にいますか?もしあなたが時間を保護する必要があれば、 –

答えて

1

本当にありがとうございました。タイムスタンプが同じであったため、時間がかかり過ぎて2度目の追加ができなくなりました。 2つの挿入は第二1が挿入されることはありませんその後、可能性が高いと同じミリ秒単位で行われている場合(およびマップのみすべてのキー1時間を格納することができます)

私は今:)

関連する問題