Предположим, у меня есть массив, int array[3] = {1,2,3};
и я хочу поменять первый и последний элемент, чтобы у меня есть array = {3,2,1};
Как это сделать с помощью STL?Поменяйте два элемента в статическом массиве с помощью STL
-6
A
ответ
7
Вы можете использовать либо std::swap
, либо std::iter_swap
.
std::swap(array[0], array[2]);
std::iter_swap(array, array+2);
1
Для решения, которое не опирается на длину массива может составлять 3, вы можете использовать std::begin
и std::end
, чтобы найти начало и конец array
, то std::iter_swap
их
std::iter_swap(std::begin(array), std::end(array)-1);
Примечание: -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);
Еще одно замечанием: с список инициализаторов, вам не нужно указывать размер массива. Компилятор рассчитает один из основанных на количестве элементов, которые вы предоставляете:
int array[] = {1,2,3}; //empty []
Смежные вопросы
- 1. Поменяйте два указателя с помощью XOR
- 2. Поменяйте два слова в строке с помощью программирования C
- 3. Когда два элемента набора STL считаются идентичными?
- 4. Javascript, переставлять два элемента в массиве функционально
- 5. Как поменять два элемента в наблюдаемом массиве?
- 6. объединить два элемента в массиве perl
- 7. Compile времени в статическом-массиве
- 8. Как суммировать наибольшие два элемента в массиве
- 9. Два элемента в массиве, xor которых максимальный
- 10. Сменить два булева элемента в массиве
- 11. Найти два равных элемента в одном массиве
- 12. функционального программирования изменить два элемента в массиве
- 13. Найдите два повторяющихся элемента в заданном массиве
- 14. Не удалось сравнить два элемента в массиве
- 15. Переключение два элемента в ассоциативном массиве
- 16. Python - Поменяйте значение для словаря элемента
- 17. количество элементов в статическом массиве заданного размера
- 18. Поменяйте константу td с помощью jquery
- 19. Перемещение элемента в массиве с помощью C#
- 20. Как перечислить два элемента для элемента в массиве?
- 21. Добавить два элемента массива с помощью цикла
- 22. php Прочитать содержимое файла в статическом массиве
- 23. рекурсивно находим два элемента с наименьшей разницей в массиве
- 24. матч два элемента в массиве с одной петлей для
- 25. Как разбить элемент в массиве на два элемента с условным?
- 26. Как получить список STL, который хранится в массиве STL?
- 27. Можно ли хранить в статическом массиве контейнера?
- 28. Изменить объекты String в статическом массиве
- 29. Поменяйте слово в строке
- 30. Поменяйте указатель на C++