课堂上的吸气剂和二传手

mun*_*ish 2 c++

我正在尝试编写一个程序,考虑到我有一大堆对象(包括一些数据,如id,name等)我有一个显示菜单,如:

1)

display_menu()
{
    vector< CD > CDArray;
    //some statements to display
    switch(choice)
    {
        //case1 , case 2, ...
        case x;
            for(int i=0; i < CDArray.size(); i++)
                CDArray[i].printCD(); //printCD() is a method of class CD
        //default
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果向量/数组很大,这将导致很多函数调用开销,使其变慢.

2) 我应该将函数printCD()声明为内联或

3) 声明另一个对象来调用该函数并通过引用传递vector/array,如:

display_menu()
{
    vector< CD > CDArray; 
    CD obj; 
    //some statements to display
    switch(choice)
    {
        //case1 , case 2, ...
        case x;
            obj.printCD(CDArray); //CDArray is passed by reference
        //default
    }
}
Run Code Online (Sandbox Code Playgroud)

第三种方法有问题吗?

你会建议什么方法?

whe*_*ies 5

你正在分析这个问题.首先让它可读,然后担心性能.你认为最好的性能瓶颈来源是100次中的99次是错误的.

编辑:

要真正回答这个问题,我会考虑面向对象的设计.您的CD对象是否需要知道如何将自己打印到屏幕上?是否需要了解有关ostreams的任何信息?我认为答案是肯定的.在C++中执行此类操作的最佳方法是要么具有一个辅助函数,该函数会重载<<运算符,以便它可以与ostream一起使用而不会强制了解对象正在使用哪个流,或者有一个返回字符串的方法对象的表示,以便您甚至不必担心字符串的去向.