Я выучил Python, прежде чем я изучил C ++. Мне было интересно, предлагает ли C ++ нарезку векторов, например нарезку в списках Python. Потребовалось пару минут, чтобы написать эту функцию, которая позволяет вырезать вектор, аналогично тому, как это делается в Python.
vector<int> slice(const vector<int>& v, int start=0, int end=-1) {
int oldlen = v.size();
int newlen;
if (end == -1 or end >= oldlen){
newlen = oldlen-start;
} else {
newlen = end-start;
}
vector<int> nv(newlen);
for (int i=0; i<newlen; i++) {
nv[i] = v[start+i];
}
return nv;
}
Использование:
vector<int> newvector = slice(vector_variable, start_index, end_index);
Элемент start_index будет включен в срез, тогда как end_index не будет включен.
Пример:
Для вектора v1 как {1,3,5,7,9}
slice (v1,2,4) возвращает {5,7}