反转两个索引之间的向量元素

时间:2015-10-08 14:45:14

标签: c++ vector

我想要反转向量的两个特定位置之间的元素。这是我的代码:

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

你能告诉我代码有什么问题吗?我可以做些什么来解决这个“问题”。

2 个答案:

答案 0 :(得分:4)

您应该传递给std::reverse几个双向迭代器

std::reverse( d.begin() + 1, d.end() - 1 );

这将反转所有vector,但是第一个和最后一个元素。

答案 1 :(得分:1)

您可能需要size()(存储的项目数)而不是capacity()(已分配的存储容量)。

如果要反转范围的顺序,则不需要循环,只需要一个命令。