Как отправить часть 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
имеет, и поэтому я не могу найти рекомендуемый метод.
Я должен написать не менее 30 символов, чтобы я мог сказать вам, вы должны попробовать:
a.mid(1,3);
Вы всегда можете написать функцию, которая сделает эту операцию за вас, например,
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;
}
Да, это возможно, но вы должны передать пару итераторов (начало и конец диапазона, который вы хотите, вы можете использовать std :: pair, чтобы передать только один аргумент, или использовать более понятный метод, который принимает два QVector::iterator
аргументы и, таким образом, более понятно, что вы имели в виду, что эта функция принимает диапазон) или, если вам проще (или элементы, которые вы хотите, не в непрерывном порядке в исходном QVector), создайте другой QVector, который содержит только выбранные элементы (вид решение, предложенное Джон).