I have
vector<int> my_vector;
vector<int> other_vector;
使用 my_vector.size() == 20
和 other_vector.size() == 5
。
给定 int n
,且满足 0 < n < 14
,我想要用 other_vector
替换子向量 (my_vector[n]
, myvector[n+1]
, ..., myvector[n+4]
)。
当然,这是一个愚蠢的代码。
for(int i=0; i<5; i++)
{
my_vector[n+i] = other_vector[i];
}
我完成了,但我在想是否有更有效的方法来完成它。 有什么建议吗?
(当然,数字20和5只是一个例子,在我的情况下,我有更大的规模!)
std::next(my_vector.begin(), n)
怎么样(或者只是my_vector.begin()+n
)。我知道这没什么关系,但是&my_vector[n]
一直看起来像是hack(这就是为什么我完全支持std::vector::data()
)。 - Christian Raustd::advance(std::begin(v), n)
和std::begin(v) + n
。但是所有这些都会占用编辑器中的水平空间,有时需要您横向滚动。因此,如果是一个向量(通常情况下),我更喜欢简短而易于理解的语法&v[i]
。 - Nawaz