将数组的内容从偏移量写入c ++向量

时间:2012-09-06 08:00:20

标签: c++ vector

我正在尝试将数组的内容写入从偏移量开始的向量中。

std::copy(arr,&arr[100],std::back_inserter(vect[offset]);

这里arr是100个整数的数组。和vect是一个包含整合的向量。上面这段代码出了什么问题?

4 个答案:

答案 0 :(得分:3)

std::back_inserter的参数必须支持push_back()操作,而int不支持,intvect[offset]的结果(假设{{1} }}是vect)。

如果您可以使用迭代器而不是偏移量,则可以使用std::vector::insert()

答案 1 :(得分:2)

std::back_inserter在后​​面插入,而不是在偏移处插入。你想要的是std::inserter,它接受​​(并更新)一个插入位置迭代器。

您可能想要std::inserter(vect, vect.begin() + offset)

请注意,这将在每次插入操作时重复重定位尾部序列。正如@Nim建议的那样,在这种情况下,直接insert()操作更可取,因为它只需一步即可插入整个范围。

答案 2 :(得分:1)

错误是back_inserter看起来像一个迭代器,但它在其参数上调用push_back,它必须是支持push_back()的容器,而不是容器的元素。 / p>

如果要从偏移量插入,则必须找到与该位置对应的迭代器,并将其作为第3个参数传递给std::copy,或使用std::vector::insert的正确重载。当然,您必须确保容器足够大,即从offset_iterator到最终的范围至少为100

答案 3 :(得分:1)

使用insert()函数,特别是采用偏移和范围的变体:

vect.insert(vect.begin() + offset, arr,&arr[100]);