我想要反转向量的两个特定位置之间的元素。这是我的代码:
std::vector<int> shuffleState(std::vector<int> deck, int numberOfRiffleShuffles) {
if (numberOfRiffleShuffles%2 !=0)
std::reverse(deck.begin()+1, deck.end()-1);
return deck;
}
编译器说:
undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
你能告诉我代码有什么问题吗?我可以做些什么来解决这个“问题”。
答案 0 :(得分:4)
您应该传递给std::reverse
几个双向迭代器:
std::reverse( d.begin() + 1, d.end() - 1 );
这将反转所有vector
,但是第一个和最后一个元素。
答案 1 :(得分:1)
您可能需要size()
(存储的项目数)而不是capacity()
(已分配的存储容量)。
如果要反转范围的顺序,则不需要循环,只需要一个命令。