특정 값으로 벡터를 채울 필요가 있습니다. 나는 a.size()
이 0에서 변경되지 않는다는 점을 제외하고 아래 코드가 작동한다는 것을 알았습니다. 요소를 넣은 후 크기 조정 호출을 추가하는 것은 거의 두 배 오래 걸립니다. 어떤 요소도 변경할 필요가 없으므로 크기를 업데이트하는 O (1) 방법이 있어야합니다. 거기 있니? 그냥 신경 쓰지 않아도 될까요?std : : 예약 및 채우기 후 벡터 크기가 업데이트되지 않습니다.
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main()
{
int n = 1e9;
vector<float> a;
a.reserve(n);
for (int i=0; i<n; i++)
a[i] = i;
cout << a[2]; //successfully prints as 1
cout << a.size(); //confusingly prints as 0
}
편집 : 링크 된 질문이 벤치마킹을 다루지 않으므로 중복되지 않습니다. 그것은 단지 예비의 차이와 크기를 묻습니다. 나는 그것에 대해 묻지 않습니다. 이 코드는 효과적이고 빠르지 만, size()를 "틀리게"남기는 추악한 부작용이 있습니다.
이 *는 * 중복입니다. 코드가 손상되었습니다. 현재 컴퓨터에서 작동한다는 사실은 부적절합니다. 단위화된 메모리에 액세스합니다. – Ven