何时使用*和&标志(通过参考或价值,......)

时间:2011-03-31 02:30:42

标签: c++

  

可能重复:
  How to pass objects to functions in C++?

我的主程序给出了平面方程系数作为向量。

我有很多飞机,我正试图找出他们的交叉路口。所以,我有一系列的平面参数,属于每个平面,我创建了一个地图来容纳平面参数,我给了一个关键作为平面数。现在,我按照随机给定的顺序调用飞机(这就是为什么,我使用地图)。因此,每次我使用两架飞机来比较它们是否相交。

我的功能:

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

现在,我想使用指针和引用来加速这个过程。请帮助我解释为什么在各个地方使用*&。 (也许我需要通过引用或其他方式调用,我所做的是按值调用?是吗,请解释因为,我没有基本的内容)。

2 个答案:

答案 0 :(得分:3)

如果你想学习何时使用指针或参考文献,我强烈建议你阅读Scott Meyers的“Effective C ++”和“More Effective C ++”。它们都是优秀的书籍,可以让您深入了解如何编写优秀的C ++代码。

我确信它们可以在亚马逊上使用。

答案 1 :(得分:0)

至少应该通过引用传递intersection_vector参数。另外,从intersection_vector返回值的矢量可能不是一个好主意。