Nie płakałbym tak nad tym ++i
vs i++
.
#include <vector>
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
vector<int> w = {1,2,3,4,5,6,7};
for (auto it = w.begin(); it != w.end(); it++)
sum += *it;
cout << sum;
}
C:\myprogs\cpp>gpp -v
Using built-in specs.
COLLECT_GCC=c:/dj/bin/gpp.exe
COLLECT_LTO_WRAPPER=c:/dj/bin/../libexec/gcc/djgpp/5.10/lto-wrapper.exe
Target: djgpp
Configured with: /gcc-5.10/configure djgpp --prefix=/dev/env/DJDIR --disable-werror --enable-languages=c,c++,fortran,obj
c,obj-c++ --enable-libquadmath-support --enable-lto
Thread model: single
gcc version 5.1.0 (GCC)
C:\myprogs\cpp>gpp it_pp.cpp -o it_pp.exe -s -O3 --std=gnu++14
C:\myprogs\cpp>gpp pp_it.cpp -o pp_it.exe -s -O3 --std=gnu++14
C:\myprogs\cpp>it_pp
28
C:\myprogs\cpp>pp_it
28
C:\myprogs\cpp>fc /b it_pp.exe pp_it.exe
Porównywanie plików it_pp.exe i PP_IT.EXE
FC: nie stwierdzono różnic
Natomiast Visual (2010) rzeczywiście generuje innego exeka, nawet z /Ox
. Nie mam czasu się przyglądać.