84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
在遍历vector容器时,使用如下方法遍历:
for(int i=0; i<vec.size(); ++i) //do something
循环条件中使用了.size()操作,我用g++测试,每次编译器都会执行这个操作,那么效率会不会有影响?编译器不会优化吗?
需不需要提前求出来,比如:
const int size = vec.size(); for(int i=0; i<size; ++i) //do something
走同样的路,发现不同的人生
一般情况下请使用 iterator 或 range for 遍历 vector,如果必须使用 index,则需要注意在循环过程中 vector 的长度是否会发生变化。
std::vector<int> vi; for (auto it = vi.begin(); it != vi.end(); ++it) // do something for (auto & i : vi) // do something
如果指定了优化o2之类的参数可能会优化,如果你没有在循环中修改vector的大小的话,其实因为vector的大小是一个变量存储的,所以这个过程并不是代价很高。
一般情况下请使用 iterator 或 range for 遍历 vector,如果必须使用 index,则需要注意在循环过程中 vector 的长度是否会发生变化。
如果指定了优化o2之类的参数可能会优化,如果你没有在循环中修改vector的大小的话,其实因为vector的大小是一个变量存储的,所以这个过程并不是代价很高。