如何将数组的一部分设置为C++中的相同值?

如何将数组的一部分设置为C++中的相同值?,c++,arrays,C++,Arrays,我想设置一个整数数组,前100个元素的值为1,另外100个元素的值为-1。我看过教程,它将所有元素设置为仅相同的值。如何将某些数组元素设置为相同的值,而将其他元素设置为不同的值?由于您没有发布任何代码,我假定您只需要将前100个元素设置为1,将下100个元素设置为-1,这样您就可以使用了。您所需要做的就是根据您的逻辑填充容器。简单地说,您可以执行以下操作: #include <vector> int main() { std::vector<int> intArr

我想设置一个整数数组,前100个元素的值为1,另外100个元素的值为-1。我看过教程,它将所有元素设置为仅相同的值。如何将某些数组元素设置为相同的值,而将其他元素设置为不同的值?

由于您没有发布任何代码,我假定您只需要将前100个元素设置为1,将下100个元素设置为-1,这样您就可以使用了。您所需要做的就是根据您的逻辑填充容器。简单地说,您可以执行以下操作:

#include <vector>
int main()
{
    std::vector<int> intArray;
    for( int i=0; i < 200; i++ )
    {
        if( i < 100 )
        {
            intArray.emplace_back(1);
        }
        else
        {
            intArray.emplace_back(-1);
        }
    }
}
或者,您也可以按照注释中的说明执行此操作:

int main ()
{
  std::vector<int> intArray(200);
  std::fill(intArray.begin(), intArray.end() - 100, 1);
  std::fill(intArray.begin() + 100, intArray.end(), -1);
}

没有用于部分填充数组或容器的函数

对这些问题的评论清楚地表明std::fill是一个选项。你也可以试试memset;所有这些都完全填满了阵列

如果您想部分填充,则必须创建自己的函数。其中一种实现可以是:

void fill(int *a,int size = 200){ fill(a,a+size/2,1); fill(a+size/2,a+size,0);} //Fills 100 with 0 and next 100 with 1.

或者?这些教程中有没有使用指向第一个成员的指针?因为它不必指向第一个成员,还要记住数组会衰减到指向第一个元素的指针。也就是说,如果你有int a[200];那么使用普通a与&a[0]相同。现在想一想你怎样才能得到一个指向其他元素的指针。