Я говорил с моим другом об этих двух частях кода. Он сказал, что python завершается, а C ++ - нет.
Python:
arr = [1, 2, 3]
for i in range(len(arr)):
arr.append(i)
print("done")
C ++:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> arr{1,2,3};
for(int i = 0; i < arr.size(); i++){
arr.push_back(i);
}
cout << "done" << endl;
return 0;
}
Я бросил вызов этому и запустил его на 2 компьютерах. Первый исчерпал память (плохо allo c), потому что у него было 4 ГБ оперативной памяти. Моя мама c как 12 ГБ оперативной памяти, и она была в состоянии бежать и заканчивать просто отлично. Я думал, что это не будет работать вечно, потому что тип size () в векторе - это unsigned int. Так как моя ma c была 64-битной, я думал, что она может хранить 2 ^ (64-2) = 2 ^ 62 дюйма (что верно), но без знака int для размера по какой-то причине 32.
Это какая-то ошибка в компиляторе C ++, которая не изменяет max_size () относительно аппаратного обеспечения системы? Переполнение вызывает завершение программы. Или это по какой-то другой причине?