小编thu*_*ove的帖子

std :: shuffle不能用std :: list编译

我试图改组一些生成的元素列表.这是代码:

std::default_random_engine generator (10);
std::list<int> list(10);

int n = 0;
std::generate(list.begin(), list.end(), [&]{ return n++; });
std::shuffle(list.begin(), list.end(), generator);
Run Code Online (Sandbox Code Playgroud)

它没有编译.以下是错误:

/include/c++/v1/algorithm:3059:34: Invalid operands to binary expression ('std::__1::__list_iterator<int, void *>' and 'std::__1::__list_iterator<int, void *>')
main.cpp:1:10: In file included from main.cpp:1:

/include/c++/v1/random:1641:10: In file included from /bin/../include/c++/v1/random:1641:

main.cpp:37:10: In instantiation of function template specialization 'std::__1::shuffle<std::__1::__list_iterator<int, void *>, std::__1::linear_congruential_engine<unsigned int, 48271, 0, 2147483647> &>' requested here
/include/c++/v1/iterator:622:1: Candidate template ignored: could not match 'reverse_iterator' against '__list_iterator'
/include/c++/v1/iterator:1017:1: Candidate template ignored: could not match …
Run Code Online (Sandbox Code Playgroud)

c++ shuffle list std

5
推荐指数
2
解决办法
2914
查看次数

标签 统计

c++ ×1

list ×1

shuffle ×1

std ×1