Trong khi cố gắng tạo một vectơ các số ngẫu nhiên, tôi vấp phải một lỗi std :: bad_alloc. Dưới đây là mã của tôi:bad_alloc trong khi khởi tạo và điền vào một vectơ?
#include "search.h"
#include "gtest/gtest.h"
int _size = 100;
std::vector<int> GetSortedVector(int size){
//init vector
std::vector<int> v(size);
//fill with random numbers
for (std::vector<int>::size_type i=0; i < v.size(); i++)
v.push_back(std::rand()%(2*size));
//return the setup vector
return v;
}
//triggered automatically
TEST(BinarySearch, NonUniqueSorted){
std::vector<int> v = GetSortedVector(_size);//nothing moves farther than this line
}
P.S .: Tôi sử dụng generate()
bởi bây giờ, nhưng tôi vẫn tò mò tại sao nó thất bại.
Trong trường hợp đặt vòng lặp phải được sửa đổi để kiểm tra dung lượng không kích thước. – Kimi
@Kimi đúng, quên mất điều đó. –
Tôi không nghĩ rằng việc kiểm tra đối với 'dung lượng' sẽ là một ý tưởng hay, vì theo như tôi biết' dự trữ' được * cho phép * để phân bổ (ngay cả khi có lẽ không thực tế). Thay vì chỉ kiểm tra 'size' (đối số hàm). –