c++11에서 초기화 자 목록을 사용하여 함수의 매개 변수를 초기화 할 수 있습니다. 그 목적은 무엇입니까? const 벡터를 사용하여 동일한 작업을 수행 할 수 있습니까? 아래 두 프로그램의 차이점은 무엇입니까? CONST 벡터를 사용이니셜 라이저 목록 대 벡터
#include <iostream>
using namespace std;
int sumL(initializer_list<int> l){
int sum = 0;
for (const auto i: l){
sum += i;
}
return sum;
}
int main(){
cout << sumL({1, 2, 3}) << "\n";
return 0;
}
:
초기화 목록을 사용하여
#include <iostream>
#include <vector>
using namespace std;
int sumV(const vector<int> l){
int sum = 0;
for (const auto i: l){
sum += i;
}
return sum;
}
int main(){
cout << sumV({1, 2, 3}) << "\n";
return 0;
}
두 번째 코드는 필요 이상으로 필요합니다. –
Offtopic : 벡터 사본을 만들었습니다 (즉, 참조를 사용하지 않았 음). for 루프에서도 마찬가지입니다. 이제는 int에 불과하지만 더 큰 객체를 사용하면 벡터의 각 객체를 복사하지 않아도됩니다. – Michiel