把大量代码放在try函数块中效率问题
把大量代码放在try函数块中程序的效率是否会大大降低?
比如:
try
{
list3.InsertAfter(list3.Head(), 1);//ok
cout << "\nList3-1: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
list3.InsertAfter(list3.Head()->Next(), 3);//ok
cout << "\nList3-2: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
list3.InsertAfter(list3.Tail(), 1); //ok
cout << "\nList3-3: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
list3.InsertBefore(list3.Head(), 2); //ok
cout << "\nList3-4: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
list3.InsertBefore(list3.Head(), 6); //ok
cout << "\nList3-5: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
list3.InsertBefore(list3.Head()->Next(), 5);
cout << "\nList3-6: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
list3.InsertBefore(list3.Tail(), 2); //ok
cout << "\nList3-7: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
//list3.InsertBefore(list3.Tail()->Next(), 2); //ok
//cout << "\nList3-8: " << list3;
list3.InsertBefore(list3.Head()->Next()->Next(), 8); //ok
cout << "\nList3-9: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
list3.InsertAfter(list3.Head()->Next()->Next(), 9); //ok
cout << "\nList3-10: " << list3;
cout << "First: " << list3.First() << " " << list3.Head()->Data() << endl;
cout << "Last: " << list3.Last() << " " << list3.Tail()->Data() << endl;
cout << "\nList3: " << list3;
list2 = list3;//long list to short list.
cout << "\nList2(After assignment List3): " << list2;
cout << "First of list2: " << list2.First() << " " << list2.Head()->Data() << endl;
cout << "Last of list2: " << list2.Last() << " " << list2.Tail()->Data() << endl;
cout << "\nlist1: " << list1;
list2 = list1; // long list to short list
cout << "\nList2(After assignment List1): " << list2;
cout << "First of list2: " << list2.First() << " " << list2.Head()->Data() << endl;
cout << "Last of list2: " << list2.Last() << " " << list2.Tail()->Data() << endl;
cout << "\nList1: " << list1;
cout << "\nList2: " << list2;
cout << "\nList3: " << list3;
list1 += list1;
cout << "list1 += list1: " << list1;
list1 += list1;
cout << "list1 += list1: " << list1;
list1 += list3;
cout << "list1 += list3: " << list1;
cout << "First of list1: " << list1.First() << " " << list1.Head()->Data() << endl;
cout << "Last of list1: " << list1.Last() << " " << list1.Tail()->Data() << endl;
cout << "ok.----------------------------------------ok." <<endl;
}
catch(exceptionUser e)
{
cout << endl << e.what() << endl;
}
相关的类里面已经写了throw函数。
[解决办法]
c++ builder里, WinMain函数里的所有东西都是在一个try块里的, 也就是说, C++ builder搞出来的那类程序代码实际上都在try块里, 似乎没有听说过大家对这种做法导致效率降低的抱怨......
[解决办法]
C++在效率方面已经是遥遥领先了,而且这种异常处理很大部分是依赖于OS的,所以几乎不用考虑效率的问题
而个人认为,C++一个与C显著的不同就包括异常处理,如果考虑异常处理的效率,那就应该考虑用C了,而不是C++!