相关疑难解决方法(0)

为什么在C++中显式调用构造函数

我知道我们可以使用范围解析运算符在C++中显式调用类的构造函数,即className::className().我想知道我究竟需要在哪里打电话.

c++ constructor

21
推荐指数
2
解决办法
5万
查看次数

为什么我的合并排序不像O(n*lg n))?

我基于Cormen's Book上提供的伪代码实现了这种合并排序.我正在复制它,因为它很短:

void merge(vector<double> &array, int start, int mid, int end) {
    int i = start;
    int j = mid + 1;
    int k = start;
    vector<double> b(array.size());

    while (i <= mid && j <= end) {
        if (array[i] <= array[j])
            b[k++] = array[i++];
        else
            b[k++] = array[j++];
    }

    while(i <= mid)
        b[k++] = array[i++];

    while(j <= end)
        b[k++] = array[j++];

    for (k = start; k <= end; k++)
        array[k] = b[k];
}
Run Code Online (Sandbox Code Playgroud)

这部分应该是O(n)

而另一个应该是O(n*lg n),其中lg登录2个碱基

void mergeSort(vector<double> …
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm performance

3
推荐指数
1
解决办法
155
查看次数

为什么可以在一个类中使用多个 std 向量?

这个答案中,我相信一个类的成员保证在内存中是连续的,按照它们被声明的顺序。但是,从文档中,“向量对其元素使用连续的存储位置”。那么,如果一个向量可能会调整大小并溢出到已经分配的内存中,那么如何在一个类中拥有多个向量,或者一个不是类的最后一个成员的向量呢?

c++ class

1
推荐指数
1
解决办法
79
查看次数

C++中的std :: vector到底是什么?

到目前为止,我发现,我完全不了解std :: vector的本质.

让我解释:

矢量是可以增长的,对吧?这意味着,在内部它必须以某种方式动态分配/重新分配内存.像这样的东西:

class vector {
private:
    int *data;
};
Run Code Online (Sandbox Code Playgroud)

好的.但是这样的定义意味着如果我们通过引用或值将std :: vector传递给另一个函数 - 这两种类型的参数传递之间没有区别,并且两个函数都能够修改数据(除非vector是作为const传递).

但!我尝试了以下内容,但我的想法失败了:

void try_to_modify(vector<int> v) {
    v[2] = 53;
}

int main() {
    vector<int> v(3);
    v[2] = 142;
    try_to_modify(v);
    cout << v[2] << '\n';    // output is: 142

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

那真相在哪儿?什么std :: vector真的是?

谢谢.

c++ stl vector

-2
推荐指数
1
解决办法
264
查看次数

标签 统计

c++ ×4

algorithm ×1

class ×1

constructor ×1

performance ×1

sorting ×1

stl ×1

vector ×1