如何获取点向量并仅抓取这些点的"y"
How to take a vector of points and grab only 'y' of those points
不幸的是,我的数学能力和objective-c/c/c++还不够成熟,无法理解如何做到这一点。
我有一个向量设置如下:[2,2,3,3,4,4,5,6,6]<-我认为这就是向量的设置方式,正确吗?
这是我认为应该设置的:
vector<CGPoint>::iterator i;
vector<CGPoint>* dp = xGraph.GraphPoints;
for(i = dp->begin(); i != dp->end(); ++i){
/* grab y points only code here*/
}
现在我想写一些for
语句,它接受xGraph.GraphPoints
,并且只获取y坐标。和我想把它放入另一个只有y坐标的向量中,在代码完成后,它看起来像[2,3,4,5,6]
有人能帮我吗?
干杯
好的,我对你的问题的解释是,你有一个包含CGPoint
对象的向量,你只想从所有点中提取y
坐标。在这种情况下,您需要类似(使用C++11 lambdas(的东西:
std::vector<CGFloat> ycoord;
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
[]( CGPoint const & p ){ return p.y; } );
如果编译器不支持lambdas,可以编写一个简单的函数来执行提取:
CGFloat extractY( CGPoint const & p ) {
return p.y;
}
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
&extractY );
或函子:
struct extractYfunctor {
CGFloat operator()( CGPoint const & p ) const {
return p.y;
}
};
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
extractYfuctor() );
如果你可以使用增强库:
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
boost::bind( &CGPoint::y, _1 ) );
或者使用一个简单的循环:
for ( std::vector< CGPoint >::const_iterator it = dp->begin(); it != dp->end(); ++it ) {
ycoord.push_back( it->y );
}
您的向量不是像[2,2,3,3,4,5,6]那样设置的。它是这样设置的:[(2,2(,(3,3(,(4,4(,(5,5(,(6,6(]。也就是说,这是一个对数字的列表,而不仅仅是一个数字列表。要获得矢量中每个元素的y
分量,可以编写这样的循环:
vector<CGPoint>* dp = xGraph.GraphPoints;
for(i = dp->begin(); i != dp->end(); ++i){
/* grab y points only code here*/
CGFloat current_y = i->y;
}
vector<CGPoint>::iterator i;
vector<CGPoint>* dp = xGraph.GraphPoints;
vector<CGFloat> dp = yPoints;
for(i = dp->begin(); i != dp->end(); ++i){
yPoints.push_back(i->y);
}
向量的布局确实像内存中那样,但不是逻辑上的。不要想太多。它仍然是CGFloat
对象的向量。
相关文章:
- 为什么这个加载函数只抓取文件中的第一件事?
- 无法使用 OpenCv 3.4.5 从具有C++ dll 的网络摄像机 (rtsp) 中抓取帧
- 如何从日志文件中抓取状态代码?(在 C++ 中)
- DXGI API:AcquireTextFrame()从不抓取更新的图像,始终为空
- 如何从 avi 文件中抓取所有帧 - 如何修改 MS 样本采集卡样本
- 如何抓取指向Qt中弹出对话框的指针,该对话框阻止了QTest中的UI线程
- 为什么抓取窗口标题的代码会导致应用崩溃?
- 用Xcb而不是Xlib抓取像素的颜色
- 如何在C ++(qt)代码中使用python脚本?(网页抓取方面)
- OpenCV 3.2 在抓取时提供选择超时,但 fscyber 可以工作
- 使用 Matrox 进行帧抓取
- C++生产者使用者中,同一使用者线程会抓取所有任务
- 在编译时间之前抓取常数值
- OpenCV + QML(从另一个线程抓取帧)
- OpenCV视频捕获抓取和检索
- 从文本中抓取句子,将所有句子分别存储在某个数据结构中
- 视频抓取不起作用 OpenCV
- 不抓取时的QGraphicsPixmapItem mouseMoveEvent
- 从二进制文件中抓取文本时,为什么 xdg_vtnr=8 是我的结果
- 如何获取点向量并仅抓取这些点的"y"