#ifndef INTVECTOR_H
#define INTVECTOR_H
using namespace std;
class IntVector{
private:
unsigned sz;
unsigned cap;
int *data;
public:
IntVector();
IntVector(unsigned size);
IntVector(unsigned size, int value);
unsigned size() const;
unsigned capacity() const;
bool empty() const;
const int & at (unsigned index) const;
};
#endif
主要
#include "IntVector.h"
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> iVector;
int *array;
IntVector::IntVector(){
sz = 0;
cap = 0;
*data = NULL;
vector<int> iVector (sz);
iVector.reserve(sz);
}
IntVector::IntVector(unsigned size){
sz = size;
iVector.resize(sz);
iVector.reserve(sz);
cap = iVector.capacity();
array = new int[sz];
array = 0;
}
IntVector::IntVector(unsigned size, int value){
sz = size;
iVector.reserve(sz);
cap = iVector.capacity();
array = new int[sz];
for(int i = 0; i < sz; i++){
array[i] = value;
}
}
unsigned IntVector::size() const{
return sz;
}
unsigned IntVector::capacity() const{
return cap;
}
bool IntVector::empty() const{
if(sz > 0){
return false;
}
else{
return true;
}
}
const int &IntVector::at(unsigned index) const{
if(index > sz){
exit(0);
}
else{
return array[index];
}
}
我有試圖設定INT *數據爲NULL,因爲我得到一個分割錯誤這個討厭的問題。我應該使用什麼方法將數據分配給IntVector中的Null以避免分段錯誤?它看起來不像我正在重新分配任何*數據,所以我有點困惑。
我的問題的第二部分是函數IntVector :: at。它應該返回存儲在傳入的索引位置元素的值,但我不知道如何直接返回值,因爲它是一個動態分配的數組,我在Google上讀到的內容很混亂。我是否必須使用特殊參數才能訪問該值?謝謝。
也許有點偏離主題,但'退出(0);'爲一個無效索引?人們應該如何弄清楚什麼是錯的?你可能會考慮拋出異常。並且'array'和'iVector'發生了什麼?他們不屬於你的班級,並且像他們一樣使用他們會嚴重地使你受到傷害。 – chris
對於我的任務,我必須像IntVector(無符號大小)一樣動態分配一個數組「將IntVector的大小和容量都設置爲傳入的參數的值,並動態分配一個該大小的數組。 – user3314899
是的,這就是'data'的用途。 – chris