我最近开始使用基于范围的 for(在获得编译器功能之后)。我注意到使用基于范围的首选形式是:
for(const auto& it: container) {...}
这对于任何大于 int 的类型都是有意义的。但是,如果容器包含原始指针(这是我的情况)或更小的类型怎么办?
具体来说,我想知道的是:
1) 请求引用而不是(可能)较小的副本是否可能会导致性能损失?如果类型的大小正好等于本机指针的大小怎么办?
2)相反,不使用参考是否可能会导致性能损失?(因为我发现编译器很可能在基于范围的情况下执行一些优化)
请注意,我要求深入了解可能的编译器行为,而不是 C++ 标准。