我想填充一个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) 我想编辑默认JMonkey项目的启动屏幕,以便我可以用自定义图像(我们的项目徽标)替换显示JMonkey的图像.我是指执行SimpleApplication项目时出现的屏幕.我正在Linux机器上运行JMonkey SDK(Linux Mint 13,如果这很重要)和OpenJDK 7.
我目前正在开发一个关于一个应用程序的项目,它能够从绘制的图像中创建一个可玩的游戏关卡(可以在这里找到: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)