Initialisieren Vektor zu null

Zunächst den Vektor "perm" ist null. Ich möchten, setzen Sie ihn auf null, basierend auf dem index der Schleife. Aber ich habe Fehler "vector subscript out of range", während Sie den code unten.

Legte ich "perm(charLength, 0)" in der "Start ()" - Methode außerhalb der Schleife, so dass es nicht zurückgesetzt werden, es ist verwendet für das anhäufen von Werten.

DecodeEngine.h

class DecodeEngine
{

public:

    vector<int> temp;
    vector<int> perm;

    //Default constructor
    DecodeEngine();


    //Declare a virtual destructor:
    virtual ~DecodeEngine();

    //Methods
    string GetFilePath();
    Mat Start();
    void FrameTo8by8();         
};

DecodeEngine.cpp

Mat DecodeEngine::Start()
{
  charLength = 160;

  //Initialize perm to zero
  perm(charLength, 0);

  //Loop 1st 100 frame of header
  while(true)
  {
     if(frame_count <= 100)
     {
        FrameTo8by8();                  //Proccess and algorithm

        namedWindow("dctBlockImage"); 
        imshow("dctBlockImage", dctImage);      //display watermarked image

        if(waitKey(30) == 27) //wait for 'esc' key press for 30 ms. If 'esc' key is pressed, break loop
        {
            cout << "esc key is pressed by user" << endl; 
            break; 
        }

        frame_count++;
     }

     else
     {
        cout << endl;
        cout << "End of video" << endl;
        cout << endl;

        destroyWindow("Original Video");
        destroyWindow("dctBlockImage");
        break;
     }
}




void DecodeEngine::FrameTo8by8()
{
  for(int i = 0; i < height-16; i += 16)
  {
    for(int j = 0 ; j < width-16; j += 16)
    {
       if(j > 112)
       {
           if(((sum4 / 4) - avg) > 0)
           {
              value = 0;
              temp.push_back(value);
           }

           else
           {
              value = 1;
              temp.push_back(value);
           }
       }

       if(temp.size() == charLength)
       {
          for(int a = 0; a <= temp.size(); a ++)
          {
             //Initialize perm to zero
             perm[a] = 0;

             if(temp[a] == 1)
             {
                perm[a]++;
             }

             //Reset temp for next frame to use
             temp[a] = 0;
          }
       }                

    }
  }
}
  • Hast du nicht gesagt, über for(int a = 0; a <= temp.size(); a ++) Sie das Letzte mal angesprochen?
  • einige meiner codes sind, fehlt von der früheren post, diese ist die neue Frage
InformationsquelleAutor user3743939 | 2014-08-12
Schreibe einen Kommentar