当前位置: 首页>>代码示例>>C++>>正文


C++ MyQueue::pollFirst方法代码示例

本文整理汇总了C++中MyQueue::pollFirst方法的典型用法代码示例。如果您正苦于以下问题:C++ MyQueue::pollFirst方法的具体用法?C++ MyQueue::pollFirst怎么用?C++ MyQueue::pollFirst使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MyQueue的用法示例。


在下文中一共展示了MyQueue::pollFirst方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: floodFill

void floodFill(string file, BITMAPFILEHEADER bh, BITMAPINFO bi, RGB *rgbGrid[], size_t x, size_t y, RGB newColor) {

    if (y >= bi.biWidth || x >= bi.biHeight) {
        cerr << " index out of bounds " << endl;
        return;
    }

    x = bi.biHeight-x-1;
    y--;

    RGB oldColor = rgbGrid[x][y];

    if (RGB_equals(oldColor, newColor)) {
        cerr << " Can't floodFill this area, because of color similarity " << endl;
        return;
    }

    PointXY currentPoint{x,y};

    MyQueue myQueue;

    size_t x1;
    size_t y1;

    do {
        x1 = currentPoint.x;
        y1 = currentPoint.y;

        while (y1 > 0 && RGB_equals(rgbGrid[x1][y1-1], oldColor)) {
            y1--;
        }

        bool spanUp = false;
        bool spanDown = false;

        while (y1 < bi.biWidth && RGB_equals(rgbGrid[x1][y1], oldColor)) {

            rgbGrid[x1][y1] = newColor;

            if (!spanUp && x1 > 0 && RGB_equals(rgbGrid[x1 - 1][y1], oldColor)) {
                PointXY p{x1-1,y1};
                myQueue.add(p);
                spanUp = true;

            } else if (spanUp && x1 > 0 && !RGB_equals(rgbGrid[x1 - 1][y1], oldColor)) {
                spanUp = false;
            }

            if (!spanDown && x1 < (bi.biHeight - 1) && RGB_equals(rgbGrid[x1 + 1][y1], oldColor)) {
                PointXY p{x1+1,y1};
                myQueue.add(p);
                spanDown = true;

            } else if (spanDown && x1 < (bi.biHeight - 1) && !RGB_equals(rgbGrid[x1 + 1][y1], oldColor)) {
                spanDown = false;
            }

            y1++;
        }

    } while (myQueue.pollFirst(currentPoint));

    writeBMP(file, bh, bi, rgbGrid);
}
开发者ID:chupakabra1996,项目名称:c-programming,代码行数:64,代码来源:main.cpp


注:本文中的MyQueue::pollFirst方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。