2017-01-12 5 views
1

私は奇妙な問題があります。キューから(以前にプッシュされたintのペア)をポップした後、ペアの2番目の要素の適切な値と最初の要素の完全なランダム値を取得します。後私が必要とするので、例えばキューがpair.firstの間違った値を返す

Iペア=(368、125)を押した場合 は、私はペア=(14416384、125)

を取得私の代わりに、一対の{INT最初、INT第}自身の構造体を使用することはできませんこれらのintのペアをすぐに見つけることができるように設定しておくと、アプリを大幅に変更する必要はありません。

修正方法はありますか?

コードの断片を以下に示します。

vector<pair<int, int>> objekt; 
set<pair<int, int>> przetworzone; 
int pointX = m_imgIN.pointX; 
int pointY = m_imgIN.pointY; 
BYTE currPixel = m_imgIN.m_bitmapObject.GetPixel8(pointX, pointY); 

if (currPixel > 0) 
{ 
    queue<pair<int, int>> kolejka; 
    kolejka.push(make_pair(pointX, pointY)); //<- here: pointX=368 and pointY=125 

    while (kolejka.size() != 0) 
    {    
     pair<int, int> p; 
     p = kolejka.front(); //<- here: p.first=14416384 and p.second=125 
     kolejka.pop(); 

     if (m_imgIN.m_bitmapObject.GetPixel8(p.first, p.second) > 0) 
     { 
      //... 
+0

あなたの例はうまくいくように見えますが、問題は提供していない要素の定義内にある必要があります。 [MCVE](http://stackoverflow.com/help/mcve)を提供するためにあなたの例を変更する必要があります。 –

答えて

1

だからあなたのコードが正常に動作します:http://ideone.com/ainPyUあなたが入力がリードバックされている正確な値。

kolejkaがローカルで作成されていますが、表示されたコードでは1つの要素しか追加されていません。あなたが私たちに示していないコードがない限り、それは意味をなさない。私は、図示されていないコードが実際に問題の原因になっていると考えています。

これらの行の間に何か他のことが起こるという前提の下で、別のコンテナに範囲を書き込んで、最初の要素の内容をストンプすることをお勧めします。私は、stの要素のアドレスにメモリブレークポイントを設定して、kolejkafirstのメンバーをデバッグします。

+1

私の問題を解決するのに役立つあなたの答えをありがとう。あなたが言ったように、問題は「表示されていない」コードにありました。 Dunnoが私がwhileループ内に配置したブレークポイントがなぜその繰り返しの後にトリガされたのでしょうか? –

+0

@JayDouble問題ありません。あなたのコーディングに幸運を祈る。私は将来あなたにもう一度援助になることを願っています! –

関連する問題