簡體   English   中英

如何讀取Point - c ++向量的向量

[英]How to read a vector of vector of Point - c++

我的矢量的矢量Point (稱為squares ,由返回findSquares()的函數squares.cpp (OpenCV的))。

我想在Point的矢量(用c ++語言)中存儲四個點的x和y坐標的平均值。

我試着這樣做:

    vector <Point> coordinates(4);

    for ( int i = 0; i<squares.size();i++) {

        coordinates[0].x += squares[i][0].x;
        coordinates[0].y += squares[i][0].y;

        coordinates[1].x += squares[i][1].x;
        coordinates[1].y += squares[i][1].y;

        coordinates[2].x += squares[i][2].x;
        coordinates[2].y += squares[i][2].y;

        coordinates[3].x += squares[i][3].x;
        coordinates[3].y += squares[i][3].y;
    } 
    if(squares.size() !=0){
        for( int j=0; j<4; j++) {
            coordinates[j].x /= squares.size();
            coordinates[j].y /= squares.size();
        }
    }

但是我得到了這個例外:

在此輸入圖像描述

我正在以錯誤的方式讀取Point矢量向量的元素?

請注意以下代碼:

if (squares.size() !=0){
    for( int j=0; j<4; j++) {
        coordinates[j].x /= squares.size();
        coordinates[j].y /= squares.size();
    }
}

squares.size()大於0但小於4時,此代碼塊可能會在coordinates[j].x處崩潰。

想象一下, squares.size()是2.當j變為2時,你認為它會在for循環中發生什么? 除法將成為coordinates[2].x /= squares.size(); ,它試圖訪問矢量中不存在的位置,導致崩潰。 請記住 :如果數組的大小為2,則向量的有效索引為0和1,因此2超出范圍。

這是您的代碼中的問題,可能是導致崩潰的原因。 要修復它,請將循環更新為:

    for (int j = 0; j < squares.size(); j++) {

如果崩潰繼續發生,則問題出在代碼中的其他位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM