我有这样的代码:
typedef intptr_t ptr_t;
const int num_elements = 100;
ptr_t *pstr = (ptr_t *)malloc(sizeof(ptr_t) * num_elements);
std::array<ptr_t,num_elements> *parray = new (pstr) std::array<ptr_t,num_elements>;
我希望能够将元素 1 洗牌到 num_elements-2 ,所以我想使用 std::shuffle。
auto s = parray->begin()++;
auto e = parray->end()--;
std::random_shuffle ( s, e );
我抱怨说没有为此的重载功能。我无法看到自己做错了什么,我感到非常愚蠢。我该怎么做?
编辑:由于答案和反馈,它已更改为
auto s = parray->begin();
s++;
auto e = parray->end();
std::random_shuffle ( s, e );
但是,在“auto e”上,我得到:“auto”的间接级别与“int *”不同