Вы также можете сделать это, используя split и join (без каких-либо регулярных выражений):
const tex = `Hello guys`;
const strs = tex.split(' ')
const changed = strs.map(str => {
const s = str.split('')
const s1 = s[1]
const s0 = s[0]
s[0] = s1
s[1] = s0
return s.join('')
})
console.log(changed.join(' '))
Массивы C ++ имеют фиксированный размер.
Если вам нужен «массив с изменяемым размером», вы захотите использовать std :: vector вместо массива.
Я бы также рекомендовал std :: vector
. Однако, если вы застряли с массивом, вы всегда можете malloc
память и затем realloc
, если вам нужно увеличить массив.
Выполните поиск здесь на SO, есть информация о malloc
и realloc
.
Мой совет еще сильнее: используйте std :: vector <>
(et. Al. ) если у вас нет очень веской причины использовать массив в стиле C. Поскольку вы изучаете C ++, я сомневаюсь, что у вас есть такая причина: используйте std :: vector <>
.
Если вы хотите изменить размер массива, вы, вероятно, захотите использовать вектор, размер которого можно изменить автоматически.
Вы можете использовать оператор [] с вектором так же, как в массиве. Вы можете реализовать это с помощью вектора, подобного этому (если вы хотите использовать больше векторных методов):
#include <vector>
const int halfelements = originalarray.size()/2; //use size to get size
vector <int> farray(halfelements);
vector <int> farray(halfelements);
for (int i = 0; i < halfelements; i++) {
farray.push_back(originalarray[i]); //adds element at i to the end of vector
}
for (int i = halfelements, x = 0; i < (halfelements * 2); i++, x++) {
sarray.push_back(originalarray[i]);
}
Вы также можете использовать .at (index), чтобы добавить проверку границ для доступа к вектору.
If you want to know why your first idea compiled but didn't seem to work:
When you omit braces in an if-statement:
if ((n % 2) != 0) int farray[halfelements + 1];
it's just the same as if you'd used them:
if ((n % 2) != 0) {
int farray[halfelements + 1];
}
So it is making an 'farray' of the correct size -- and then it immediately goes out of scope and is gone, and you're left with only the original one.