c++ - 用相同的值填充数组,循环重置值

标签 c++ arrays loops numbers constants

我正在从事一个编程项目 (mancala),但在编写数组时卡住了。我需要编写一个数组,用值 4 填充所有板箱,然后将两个箱重置为 0。到目前为止我只有

{

    int i;
    int beadArray[MAX] = {4};

    for (i = 0; i < MAX; i++)
    {
           beadArray[i] = -1;
    }

    for (i = 0; i < MAX; i++)
    {
            cout<<i<<"\t";

    }

最佳答案

int beadArray[MAX] = {4};

这一行将第一个元素初始化为4,其余元素初始化为0,不是全部初始化为4。

使用 vector 的东西在未来会更容易处理和更好:

std::vector<int> beadArray (MAX, 4); //MAX elements, initialized to 4
beadArray [indexToReset1] = 0; //reset one element
beadArray [indexToReset2] = 0; //reset other element

//print array - C++11
for (int bead : beadArray)
    cout << bead << '\t';

//print array - C++03, consider using std::for_each instead
for (vector<int>::const_iterator it = beadArray.begin(); it != beadArray.end(); ++it)
    cout << *it << '\t';

非 vector 解决方案:

没有 vector ,仍然可以使用 STL 算法:

int beadArray [MAX];

std::fill (beadArray, beadArray + MAX, 4);
beadArray [6] = beadArray [13] = 0; //just the two elements
std::fill (beadArray + 6, beadArray + 13, 0); //the range of elements from 6-13

打印数组的一种更聪明的方法是使用 ostream 迭代器:

std::copy (beadArray, beadArray + MAX, std::ostream_iterator<int> (std::cout, "\t"));

只是简单的 C++:

int beadArray [MAX];

for (int i = 0; i < MAX; ++i)
    beadArray [i] = 4; //set every element to 4

beadArray [6] = beadArray [13] = 0; //set elements 6 and 13 to 0

for (int i = 0; i < MAX; ++i)
    cout << beadArray [i] << '\t'; //print each element separated by tabs

关于c++ - 用相同的值填充数组,循环重置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10308932/

相关文章:

c++ - 使用 crypto++ 库验证 openssl 签名

c++ - 将按钮连接到任意函数

php - 从 MySQL 结果创建层次数组

java - 如何在 JSP 中循环遍历 HashMap?

c++ - 通过代码的方式减轻该函数的重量

c++ - 根据其成员子对象之一的地址计算对象的地址

PHP:如何创建一个好的 foreach 速记?

c++ - 为什么无论我输入什么,我的 "while"循环都会执行?

jquery - JavaScript : how to loop through an array upon each call

排列数组中元素的算法