2012-09-06 39 views

回答

1

使用insert()功能,接受一个偏移量和范围具体变体:

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

有什么问题是back_inserter看起来像一个迭代器,但它的参数调用push_back,它的参数必须是支持push_back()的容器,而不是容器的元素。

如果要从偏移量中插入,则必须找到与该位置相对应的迭代器,并将该值作为第三个参数传递给std::copy,或者使用右侧超载std::vector::insert。当然,你必须确保容器足够大,即从offset_iterator到最后的范围至少是尺寸100

3

std::back_inserter参数必须支持push_back()操作,并且int不和一个intvect[offset]结果(假设vectvector<int>)。

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

2

std::back_inserter插入在后面,而不是在一个偏移量。你想要的是std::inserter,它需要(和更新)一个插入位置迭代器。您可能需要std::inserter(vect, vect.begin() + offset)

请注意,这将在每次插入操作时反复重新定位尾部序列。正如@Nim所建议的那样,在这种情况下,直线运算insert()是可取的,因为它将整个范围插入到一个步骤中。