小编Bla*_*mba的帖子

使用std :: fill来填充向量越来越多的数字

我想填充一个vector<int>使用std::fill,但不是一个值,矢量应该包含数字后增加的顺序.

我尝试通过迭代函数的第三个参数来实现这一点,但这只会给我一个填充1或2的向量(取决于++运算符的位置).

例:

vector<int> ivec;
int i = 0;
std::fill(ivec.begin(), ivec.end(), i++); // elements are set to 1
std::fill(ivec.begin(), ivec.end(), ++i); // elements are set to 2
Run Code Online (Sandbox Code Playgroud)

c++ stl

65
推荐指数
7
解决办法
7万
查看次数

在JMonkey Engine中编辑启动屏幕

我想编辑默认JMonkey项目的启动屏幕,以便我可以用自定义图像(我们的项目徽标)替换显示JMonkey的图像.我是指执行SimpleApplication项目时出现的屏幕.我正在Linux机器上运行JMonkey SDK(Linux Mint 13,如果这很重要)和OpenJDK 7.

java openjdk splash-screen jmonkeyengine

5
推荐指数
1
解决办法
1850
查看次数

偶尔使用迭代器进行分段错误

我目前正在开发一个关于一个应用程序的项目,它能够从绘制的图像中创建一个可玩的游戏关卡(可以在这里找到:Github).为此,我使用openCV进行图像处理.
我的问题是一个函数,它应该将检测到的线条(水平面上的"墙壁")绘制到图像上.

void LineFinder::drawDetectedLines( cv::Scalar color)
{
    for (auto it = Play::getInstance()->getFinder()->getLines().begin(); it != Play::getInstance()->getFinder()->getLines().end(); ++it)
    {
        // The lines are stored in an std::vector<cv::Vec4i>, 
        // so basically in a vector which contains vectors with 4 elements each
        cv::Point pt1((*it)[0], (*it)[1]);
        cv::Point pt2((*it)[2], (*it)[3]);

        // draws a line from pt1 to pt2
        cv::line(Play::getInstance()->getFinder()->getImage(), pt1, pt2, color);

        ++it;
    }
}
Run Code Online (Sandbox Code Playgroud)

当这个函数执行时,大多数时候我都会遇到分段错误,但有时它会起作用,结果就像我预期的那样.我知道向量包含元素.
那么你能想到的这种行为有什么可能的原因吗?

编辑:有趣的是,当使用此函数的函数已成功执行一次时,我可以反复执行它,并且不会发生错误.

编辑2:我仍然不知道为什么我用迭代器得到分段错误,但没有它们它以某种方式工作:

void LineFinder::drawDetectedLines( cv::Scalar color)
{
    for (int i = 0; i < Play::getInstance()->getFinder()->getLines().size(); ++i)
    { …
Run Code Online (Sandbox Code Playgroud)

c++ opencv iterator vector segmentation-fault

0
推荐指数
1
解决办法
220
查看次数