C ++相当于Python的:用于数组索引

时间:2018-01-31 17:42:02

标签: c++ arrays indexing slice

在C ++中使用数组时,是否有一种简单的方法可以同时访问数组的多个索引(例如Python :

E.g。我有一个长度为100的数组x。如果我想在Python中使用此数组的前50个值,我可以编写x[0:50]。在C ++中,有一种更简单的方法来访问除x[0,1,2,...,49]以外的数组的相同部分吗?

2 个答案:

答案 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::beginstd::end仅适用于数组,而不适用于指针!更安全,更容易使用像std::vector这样的容器。