0x03-学习玩转数据结构-数组获取\修改元素
1、怎么获取元素
向大家介绍了如何在数组中添加元素,现在我们的数组中有了元素之后,我们就可以尝试查询数组中的元素,并且修改相应的元素。那么对于我们的数组来说,他的数据真正的其实是存储在我们封装在data这个类中的一个私有的静态数组data这样的一个数组中。那么相应的对于静态数组我们可以非常方便地用方括号索引的方式来查询相应的元素,那么对于这样的一种方式呢,在我们自己定义的这个数组这个类依然是可以使用的。
```
// 打印数组内元素
stringAMGArray::toString() {
charpre[100] ="0";
sprintf(pre,"AMGArray size:%d, capacity:%d\n", size, capacity);
stringres ="";
res.append(pre);
res.append("[");
for(inti =0; i < size; i++) {
chars[20] ="";
if( i != size -1) {
sprintf(s,"%d,", data[i]);
}else{
sprintf(s,"%d", data[i]);
}
res.append(s);
}
res.append("]");
returnres;
}
```
2、实现获取元素
这里定义一个get方法,用户只能通过get方法来获得这个静态数组中某一个索引对应的元素,而不能直接获得data这个静态数组。这样做有什么好处呢,最典型的一个好处就是,我们在这个函数中就可以对用户传进来的这个索引进行判断,他们在这里我们就要保证这个索引必须是合法的。也就说如果我们的这个index小于0或者index是大于等于size的话,那么此时我们的这个一index都是一个非法的索引,我们就可以这样抛出一个异常告诉用户,get这个函数执行failed,因为这个索引是非法的。
```
// 获取index位置上的元素intAMGArray::get(intindex) {if(index<0||index>= size ) {cout <<"Index 不合法"<< endl;return-1; }returndata[index];}
```
3、为什么这样做
当然啦这样做与此同时也解决了之前我们说的一个问题,回一下之前我们说我们静态数组必须要开一定的空间,可是我们实际对于我们存储的元素可能使用不了那么多空间。那么没使用的那些空间怎么办呢?答案就是通过get这个方法用户是永远无法去查询那些没有使用的空间的,通过这样的封装的方式来保证了我们整个数组安全。
删除4、也有更新方法
当然啦,有get相应的就应该有set方法法,那么对于set方法来说,他就是进行我们数组元素的更新,我们可以把我们数组中某一个索引位置的元素改变是e这样的元素。改变了过程也非常的简单,就是data[index]等于这个e就好了。那么在这里依然是在执行这句话之前,我们要保证用户传进来的这里index是合法的,所以也要像之前那样判断。就非常容易的完成了我们的这个数组,从外部的用户来如何获取某个索引位置的元素,如修改某个索引位置的元素。接下来会在自定义数组类中添加更多的方法。
```
// 更新index位置上的元素voidAMGArray::set(intindex,inte) {if( index <0|| index >= size ) {cout<<"Index 不合法"<
```