1

我有两个矩形向量

std::vector<cv::Rect>faces;
std::vector<cv::Rect>windows;

我需要将窗口与面孔连接起来......为此我将代码编写为

 int fsize=faces.size();
    for(int i=0;i<windows.size();i++)
    {
        faces[fsize]=windows[i];
        fsize++;
    }

但我认为这段代码会造成分段错误......有人知道任何更好的......或任何内置函数吗?

4

2 回答 2

3

使用插入:

faces.insert(faces.end(), windows.begin(), windows.end());

或移动内容:

faces.insert(faces.end(), std::make_move_iterator(windows.begin()), 
                          std::make_move_iterator(windows.end()));
于 2013-02-18T02:47:50.533 回答
2

您将替换faceswindowsand ifwindows有更多的元素比faces您访问的边界之外的faces.

如果您真的是说Concatenating而不是replacing

faces.reserve(faces.size() + windows.size());
faces.insert(faces.end(), windows.begin(), windows.end());
于 2013-02-18T02:48:57.660 回答