我的主程序给出了平面方程系数作为向量。
我有很多飞机,我正试图找出他们的交叉路口。所以,我有一系列的平面参数,属于每个平面,我创建了一个地图来容纳平面参数,我给了一个关键作为平面数。现在,我按照随机给定的顺序调用飞机(这就是为什么,我使用地图)。因此,每次我使用两架飞机来比较它们是否相交。我的功能:
vector<double> intersection_vector(vector<double> plane1,vector<double> plane2){
vector<double> cross_product;
double a1=plane1.at(0);
double b1=plane1.at(1);
double a2=plane2.at(0);
double b2=plane2.at(1);
//double d1=plane1.at(2);
//double d2=plane2.at(2);
int c1=-1,c2=-1;
double cross_a=(b1*c2)-(b2*c1);
double cross_b=(a2*c1)-(a1*c2);
double cross_c=(a1*b2)-(a2*b1);
cross_product.push_back(cross_a);cross_product.push_back(cross_b);cross_product.push_back(cross_c);
return cross_product;
}
主程序:
//some codes
map<int, vector<int> >::iterator xx;
for (xx=parameter_list.begin();xx!= parameter _list.end();xx++){
int my_plane=xx->first;
vector <int> your_planes=xx->second;
for(int i=0; i< your _planes.size();i++){
int any_ your _plane= your _planes.at(i);
vector <double>edge_line=intersection_vector(my_plane, any_ your _plane);
// do something
现在,我想使用指针和引用来加速这个过程。请帮助我解释为什么在各个地方使用*
和&
。 (也许我需要通过引用或其他方式调用,我所做的是按值调用?是吗,请解释因为,我没有基本的内容)。
答案 0 :(得分:3)
如果你想学习何时使用指针或参考文献,我强烈建议你阅读Scott Meyers的“Effective C ++”和“More Effective C ++”。它们都是优秀的书籍,可以让您深入了解如何编写优秀的C ++代码。
我确信它们可以在亚马逊上使用。
答案 1 :(得分:0)
至少应该通过引用传递intersection_vector参数。另外,从intersection_vector返回值的矢量可能不是一个好主意。