这个问题非常基本。 (我很不解,为什么搜索没有找到任何东西)Howto从C++向量中优雅地提取2D矩形区域
我有一个长方形的“图片报”存储它的像素颜色线 在一个std ::行向量
后,我想复制一个矩形区域出于该图片。
我将如何在C++中优雅地编码?
我第一次尝试:
template <class T> std::vector<T> copyRectFromVector(const std::vector<T>& vec, std::size_t startx, std::size_t starty, std::size_t endx, std::size_t endy, std::size_t fieldWidth, std::size_t fieldHeight)
{
using namespace std;
vector<T> ret((endx-startx)*(endy-starty)+10); // 10: chickenfactor
// checks if the given parameters make sense:
if (vec.size() < fieldWidth*endy)
{
cerr << "Error: CopyRectFromVector: vector to small to contain rectangular region!" << std::endl;
return ret;
}
// do the copying line by line:
vector<T>::const_iterator vecIt = vec.begin();
vector<T>::forward_iterator retIt = ret.end();
vecIt += startx + (starty*fieldWidth);
for(int i=starty; i < endy; ++i)
{
std::copy(vecIt, vecIt + endx - startx, retIt);
}
return ret;
}
甚至不编译.....
ADDIT:澄清: 我知道这个 “手工” 做。这不是一个问题。但我会喜欢一些C++ stl迭代器的魔法,但它的功能相同,但速度更快,而且...更多C++时尚。
此外:我给算法pictureDataVector,图片的宽度和高度,以及一个矩形表示我想从图片中复制出来的区域。 返回值应该是一个包含矩形内容的新向量。
认为它是打开你最喜欢的图像编辑器,并复制出一个矩形区域。 图片存储为像素颜色的一维长阵列(矢量)。
尼尔你是一个生命的救星:) 写评论,这样我可以+1你的:) – AndreasT 2009-04-23 18:49:00
澄清:尼尔刚救我的(糟糕)的示例代码:) 仍不能确定我做错了什么?但到底是什么... – AndreasT 2009-04-23 18:56:14
你试图使用HTML - 不这样做。相反,用鼠标选择所有代码并键入Ctrl-K。 – 2009-04-23 19:01:08