Использование подмножества QVector в функции

Как отправить часть QVector в функцию?

QVector<int> a;
a.append(1);
a.append(2);
a.append(3);
a.append(4);
a.append(5);

Некоторые функции печати должны печатать «2 3 4», принимая в качестве аргумента подмножество вектора.

В R это было бы возможно с помощью a[2:4],

Это вообще возможно?

Примечание: в std::vectorрекомендуется использовать insert функция для создания новой переменной. Это другая вставка, хотя QVector имеет, и поэтому я не могу найти рекомендуемый метод.

2

Решение

Я должен написать не менее 30 символов, чтобы я мог сказать вам, вы должны попробовать:

a.mid(1,3);
5

Другие решения

Вы всегда можете написать функцию, которая сделает эту операцию за вас, например,

QVector<int> sub_vector(const QVector<int>& vec, size_t from, size_t to)
{
QVector<int> subvec;
for (size_t i = from; i <= to; ++i)
subvec.append(vec[i]);
return subvec;
}
1

Да, это возможно, но вы должны передать пару итераторов (начало и конец диапазона, который вы хотите, вы можете использовать std :: pair, чтобы передать только один аргумент, или использовать более понятный метод, который принимает два QVector::iterator аргументы и, таким образом, более понятно, что вы имели в виду, что эта функция принимает диапазон) или, если вам проще (или элементы, которые вы хотите, не в непрерывном порядке в исходном QVector), создайте другой QVector, который содержит только выбранные элементы (вид решение, предложенное Джон).

1
По вопросам рекламы [email protected]