我工作的一个编程项目(宝石棋),并书写一个数组的时候已经得到了坚持。 我需要编写,填补所有的板箱有四个值的数组,然后重置两个区间为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。
采用向量会更容易处理,并在未来能有更好的东西:
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';
非向量的解决方案:
没有载体,STL agorithms仍可使用:
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
为什么你指定要使用循环填写指数6和13? 如果你只在两个值填充循环是没有必要的。
由于这只是一个宝石棋游戏,如果你不需要使用大于255的数字(一个字节可以容纳的最大值),那么你可以使用一个无符号字符数组和memset。
char beadArray[MAX];
memset( beadArray, 4, sizeof(beadArray));
beadArray[6] = beadArray[13] = 0;
for( int i = 0; i < sizeof(beadArray); i++)
cout << beadArray[i] << "\t";