假设我有一个数组int array[3] = {1,2,3};
,我想交换第一个和最后一个元素,以便我有array = {3,2,1};
我怎么能用STL做到这一点?
答案 0 :(得分:7)
您可以使用std::swap
或std::iter_swap
。
std::swap(array[0], array[2]);
std::iter_swap(array, array+2);
答案 1 :(得分:1)
对于不依赖于数组长度为3的解决方案,您可以使用std::begin
和std::end
查找array
的开头和结尾,然后{ {1}}他们
std::iter_swap
注意:std::iter_swap(std::begin(array), std::end(array)-1);
因为iterable的-1
引用了一个结尾的元素。您需要end
和#include <iterator>
才能实现此目的。
如果您想要更灵活,可以创建模板化功能
#include <algorithm>
然后可以使用静态数组(或其他容器)调用
template <typename T>
void swap_first_and_last(T& seq) {
std::iter_swap(std::begin(seq), std::end(seq)-1);
}
另一个注释:使用初始化列表,您不需要为数组提供大小。编译器将根据您提供的元素数量计算出一个:
swap_first_and_last(array);