如何将矢量中的值复制到数组中?

时间:2011-08-16 02:01:45

标签: c++ arrays vector

如何在行dValues[]中获取double dValues[] = {what should i input here?}?因为我正在使用数组。目标是获得模式。

#include <iostream>
#include <vector>
#include <numeric>

using namespace std;

double GetMode(double daArray[], int iSize) {
// Allocate an int array of the same size to hold the
// repetition count
int* ipRepetition = new int[iSize];
for (int i = 0; i < iSize; ++i) {
    ipRepetition[i] = 0;
    int j = 0;
    bool bFound = false;
    while ((j < i) && (daArray[i] != daArray[j])) {
        if (daArray[i] != daArray[j]) {
            ++j;
        }
    }
    ++(ipRepetition[j]);
}
int iMaxRepeat = 0;
for (int i = 1; i < iSize; ++i) {
    if (ipRepetition[i] > ipRepetition[iMaxRepeat]) {
        iMaxRepeat = i;
    }
}
delete [] ipRepetition;
return daArray[iMaxRepeat];
}


int main()  
{
int count, minusElements; 
float newcount, twocount;
cout << "Enter Elements:";
std::cin >> count;
std::vector<float> number(count);




cout << "Enter " << count << " number:\n";
for(int i=0; i< count ;i++)  
{
   std::cin >> number[i];
}

double dValues[] = {};
int iArraySize = count;

std::cout << "Mode = "
            << GetMode(dValues, iArraySize) << std::endl;

2 个答案:

答案 0 :(得分:2)

您已经拥有number向量中的所有值,但如果您想将这些值复制到名为dValues的新数组中,则必须在堆上分配它(因为您不能在编译时知道大小),从向量中复制元素,然后释放该内存:

double *dValues = new double[number.size()];

for (size_t i = 0; i < number.size(); i++)
{
    dValues[i]  = number[i];
}

// whatever you need to do with dValues

delete [] dValues;

你也没有检查你是否在for循环中的向量范围内。更安全的实现将使用push_back()上的vector方法,而不是按索引分配值。

答案 1 :(得分:0)

如果我理解正确,您希望将向量中的元素复制到数组中。如果是的话 -

 float *dValues = new float[count] ; // Need to delete[] when done
 std::copy( number.begin(), number.end(), dValues );

std::copy位于算法标题中。但是为什么要为此任务使用/创建原始数组。您已经拥有了向量number,只需将其传递给GetMode(..)