在C ++中使用数组时,是否有一种简单的方法可以同时访问数组的多个索引(例如Python :
?
E.g。我有一个长度为100的数组x。如果我想在Python中使用此数组的前50个值,我可以编写x[0:50]
。在C ++中,有一种更简单的方法来访问除x[0,1,2,...,49]
以外的数组的相同部分吗?
答案 0 :(得分:0)
你可以做类似下面的事情
int main()
{
int myints[]={10,20,30,40,50,60,70};
array<int,5> mysubints;
std::copy(myints, myints+5, mysubints.begin());
for (auto it = mysubints.begin(); it!=mysubints.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
}
您也可以使用vector而不是数组数据类型
答案 1 :(得分:0)
你最接近的可能是使用迭代器。在<algorithm>
中,您可以找到一组作用于迭代器范围的函数,例如:
int x[100];
int new_value = 1;
std::fill(std::begin(x), std::begin(x) + 50, new_value);
这会将范围中的值更改为new_value
。 <algorithm>
中的其他函数可以复制范围(std::copy
),将函数应用于范围(std::transform
)中的元素等。
如果您使用此功能,请注意std::begin
和std::end
仅适用于数组,而不适用于指针!更安全,更容易使用像std::vector
这样的容器。