C++ 如何获取点向量并仅获取';y';这些要点
不幸的是,我的数学能力和objective-c/c/c++还没有发展到足以理解如何做到这一点 我有一个向量设置如下: [2,2,3,3,4,4,5,5,6,6]begin();我!=dp->end()++(一){ /*这里只抓取y点代码*/ } 现在我想为语句编写一种,它接受xGraph.GraphPoints并只获取y坐标。 而且。。。我想把它放到另一个只有y坐标的向量中,在代码完成后看起来像[2,3,4,5,6] 有人能帮我吗 干杯C++ 如何获取点向量并仅获取';y';这些要点,c++,vector,C++,Vector,不幸的是,我的数学能力和objective-c/c/c++还没有发展到足以理解如何做到这一点 我有一个向量设置如下: [2,2,3,3,4,4,5,5,6,6]begin();我!=dp->end()++(一){ /*这里只抓取y点代码*/ } 现在我想为语句编写一种,它接受xGraph.GraphPoints并只获取y坐标。 而且。。。我想把它放到另一个只有y坐标的向量中,在代码完成后看起来像[2,3,4,5,6] 有人能帮我吗 干杯vector::iterator i; 向量*dp=xGr
vector::iterator i;
向量*dp=xGraph.GraphPoints;
向量dp=yPoints;
对于(i=dp->begin();i!=dp->end();+i){
点。向后推_(i->y);
}
向量在内存中确实是这样排列的,但不是逻辑上的。不要想得太多。它仍然是CGFloat
对象的向量。向量::迭代器i;
向量*dp=xGraph.GraphPoints;
向量dp=yPoints;
对于(i=dp->begin();i!=dp->end();+i){
点。向后推_(i->y);
}
向量在内存中确实是这样排列的,但不是逻辑上的。不要想得太多。它仍然是一个
CGFloat
对象的向量。你的向量不是像[2,2,3,3,4,4,5,5,6,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*dp=xGraph.GraphPoints;
对于(i=dp->begin();i!=dp->end();+i){
/*这里只抓取y点代码*/
CGFloat电流_y=i->y;
}
向量的设置与[2,2,3,3,4,4,5,5,6,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*dp=xGraph.GraphPoints;
对于(i=dp->begin();i!=dp->end();+i){
/*这里只抓取y点代码*/
CGFloat电流_y=i->y;
}
好的,我对你的问题的解释是,你有一个包含CGPoint
对象的向量,你只想从所有点提取y
坐标。在这种情况下,您需要(使用C++11 lambdas):
或函子:
struct extractYfunctor {
CGFloat operator()( CGPoint const & p ) const {
return p.y;
}
};
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
extractYfuctor() );
如果可以使用boost库:
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 );
}
for(std::vector::const_迭代器it=dp->begin();it!=dp->end();+it){
ycoord.push_back(it->y);
}
好的,我对你的问题的解释是,你有一个包含CGPoint
对象的向量,你只想从所有点提取y
坐标。在这种情况下,您需要(使用C++11 lambdas):
或函子:
struct extractYfunctor {
CGFloat operator()( CGPoint const & p ) const {
return p.y;
}
};
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
extractYfuctor() );
如果可以使用boost库:
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 );
}
for(std::vector::const_迭代器it=dp->begin();it!=dp->end();+it){
ycoord.push_back(it->y);
}
<代码>如果你有一个向量,那么你就使用C++,而不是ObjuleC或C。你确定你没有使用C++吗?你所显示的代码不是C。你想翻译吗?你的正确。我正在构建一个ipad应用程序,使用所有3个。固定itj++;如果(!(j%2))y.push(dp[i])@我已经移除了[Objective-C]和[C]标签。在应用程序的其他部分中使用它是否真的影响了这个特殊的问题是C++。如果你有一个向量,那么你就使用C++,而不是ObjuleC或C。你确定你没有使用C++吗?你所显示的代码不是C。你想翻译吗?你的正确。我正在构建一个ipad应用程序,使用所有3个。固定itj++;如果(!(j%2))y.push(dp[i])@我已经移除了[Objective-C]和[C]标签。无论你在你的应用程序的其他部分使用它,都不会真正影响这个特殊的问题是C++。我的头上会有什么要点?我不知道你在做什么。code>将它放入另一个只包含y坐标的向量中…
听起来像是一个临时变量,它不属于标题。它应该是函数的局部。啊,我明白了。正如我在第一行中所说,我的编程技能不是很先进。我的标题中的yPoints是什么?我不知道你在做什么将它放入另一个只包含y坐标的向量中…
听起来像是一个临时变量,它不属于标题。它应该是函数的局部。啊,我明白了。正如我在第一行中所说,我的编程技能不是很先进。这会使当前_y成为向量吗?我会去读关于CGFloat的书,因为我不懂这行。这会让current_y成为向量吗?因为我不理解这一行,所以我会去读关于CGFloat的书。只把y坐标提取到另一个向量中。但除此之外,你的解释是正确的。让我再看一下你的代码。你能解释一下普通循环中的it->y吗?哦,别介意把你推回去。我让它只提取y坐标到另一个向量中。但除此之外,你的解释是正确的。让我再看一下你的代码。你能解释一下普通循环中的it->y吗?哦,别介意把你推回去。我得到了它