细分向量 - 不确定如何处理(const)迭代器?

时间:2014-10-18 05:05:05

标签: c++ vector split

我一直试图细分一个向量。基本上,我的目标是将初始向量(nVector)拆分为较小的向量,在这些向量上应用连续的排序。最终,将从最终排序的子向量中选择元素K.我的问题是我无法弄清楚如何从头脑中实现以下算法。

我想,在向量中的任何一点j,从该点开始向量的子向量。然而,实现它让我很难让迭代器同意,并且我得到了来自const int * const'的无效转换。到int *错误。我不知道如何处理这个问题,因为根据我的理解,迭代器必须是不变的。代码如下。

int subVectorize() {

vector<int> subVector(M);

int j = 0;
for (unsigned int z = 0; z < nVector.size();  z++)
{

vector<int>::const_iterator start = nVector.begin() + z;
vector<int>::const_iterator end = nVector.begin() + z + M - 1;

if (end <= nVector.end()){

    for (vector<int>::iterator i = start; i <= end ; i++) {
        subVector.at(j) = *i;
        j++;
    }

    j = 0;
    cVector[z] = sortReturn(M, K, subVector);
 }

else {
    end -= nVector.size();
    for (vector<int>::iterator i = start; i <= nVector.end() ; i++) {
        subVector.at(j) = *i;
        j++;
    }
    for (vector<int>::iterator i = nVector.begin(); i <= end; i++) {
        subVector.at(j) = *i;
        j++;
    }
    j = 0;
    cVector[z] = sortReturn(M, K, subVector);
}
}

int* finalArray = new int[N];

for(int i = 0; i <= N; i++) {

finalArray[i] = cVector[i];
}

quickSort (finalArray, 0, N);

return finalArray[0];

}

0 个答案:

没有答案