我被告知在這裏使用矢量而不是數組爲這個特定的解決方案(My original solution using to dynamically allocate arrays)我的問題是我不真正理解向量,我的書只涵蓋了一小部分。所以,也許我做錯了什麼?我只是試圖學習用矢量解決它的不同方式。所以,當我問是否有可能動態分配一個向量。我的意思是這樣做合法,std::vector<int*> vect= nullptr;
,如果不是爲什麼呢?另外,看到一個示例如何使用向量修改我的原始解決方案將非常有幫助。我是一個剛從我的錯誤中學習的初學者。是否可以動態分配一個向量?
#include <iostream>
#include <vector>
void sortAscendingOrder(int*, int);
void LowestTestScore(int*, int);
void calculatesAverage(int*,int);
int main()
{
std::vector<int*> vect= nullptr;
int input;
std::cout << "Enter the number of testscores you want to enter." <<std::endl;
std::cin >> input;
vect = new int[input];
for(int count =0; count < input; count++)
{
std::cout << "Enter the test score" << (count +1) <<":" <<std::endl;
std::cin >> vect[count] ;
while(vect[count] < 0)
{
std::cout <<"You enter a negative number. Please enter a postive number." <<std::endl;
std::cin >> vect[count];
}
}
sortAscendingOrder(vect,input);
for(int count =0; count < input;count++)
{
std::cout << "\n" <<vect[count];
std::cout << std::endl;
}
LowestTestScore(vect,input);
calculatesAverage(vect,input);
return 0;
}
void sortAscendingOrder(int* input,int size)
{
int startScan,minIndex,minValue;
for(startScan =0; startScan < (size-1);startScan++)
{
minIndex = startScan;
minValue = input[startScan];
for(int index = startScan+1;index<size;index++)
{
if(input[index] < minValue)
{
minValue = input[index];
minIndex = index;
}
}
input[minIndex]=input[startScan];
input[startScan]=minValue;
}
}
void LowestTestScore(int* input, int size)
{
int count =0;
int* lowest = nullptr;
lowest = input;
for(count =1; count <size;count++)
{
if(input[count] < lowest[0])
{
lowest[0] = input[count];
}
}
std::cout << "Lowest score" << *lowest;
}
void calculatesAverage(int* input, int size)
{
int total = 0;
int average =0;
for(int count = 0; count < size; count++)
{
total += input[count];
}
average =(total/size-1);
std::cout << "Your average is" << average;
}
您可能需要解釋一下你的條件多一點。向量使用new分配連續的內存塊。這符合我對動態分配的定義。 –
矢量之美是它爲你做動態分配。更多信息:http://en.cppreference.com/w/cpp/container/vector – user4581301
您的意思是:'auto p_vec = std :: make_unique>();'? –
paddy