Ошибка подтверждения при использовании std :: copy_if для std :: vector - PullRequest
1 голос
/ 25 января 2012

Почему я получаю ошибку во время выполнения при попытке сделать:

std::vector<int> vi;
std::generate_n(std::back_inserter(vi),10,rand);  

std::vector<int> vi_1;
vi_1.reserve(vi.size());
std::copy_if(vi.begin(),vi.end(),vi_1.begin(),std::bind2nd(std::greater<int>(),-20000));  
//Here (in copy_if) I'm getting assert error.

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Резерв на самом деле не создает объекты, он только гарантирует, что каждый вызов, который увеличит вектор до заданного предела, будет O (1).Используйте resize.

1 голос
/ 25 января 2012

vi_1.reserve просто резервирует память, но не меняет фактический размер вектора.Для этого вы должны использовать resize.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...