小编bla*_*azs的帖子

我应该删除移动构造函数和智能指针的移动分配吗?

我正在实现一个简单的智能指针,它基本上跟踪它处理的指针的引用数量.

我知道我可以实现移动语义,但我不认为复制智能指针非常便宜.特别是考虑到它引入了产生令人讨厌的错误的机会.

这是我的C++ 11代码(我省略了一些不必要的代码).欢迎提出一般性意见.

#ifndef SMART_PTR_H_
#define SMART_PTR_H_

#include <cstdint>

template<typename T>
class SmartPtr {
private:
    struct Ptr {
        T* p_;
        uint64_t count_;
        Ptr(T* p) : p_{p}, count_{1} {}
        ~Ptr() { delete p_; }
    };
public:
    SmartPtr(T* p) : ptr_{new Ptr{p}} {}
    ~SmartPtr();

    SmartPtr(const SmartPtr<T>& rhs);
    SmartPtr(SmartPtr<T>&& rhs) =delete;

    SmartPtr<T>& operator=(const SmartPtr<T>& rhs);
    SmartPtr<T>& operator=(SmartPtr<T>&& rhs) =delete;

    T& operator*() { return *ptr_->p_; }
    T* operator->() { return ptr_->p_; }

    uint64_t Count() const { return ptr_->count_; }

    const T* …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers move-semantics c++11

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

Quicksort奇怪的时间复杂度,c ++

我一直在测试不同数字序列的不同排序算法的时间复杂度,直到我得到快速排序(在中间有枢轴)的结果一直是一半上升而另一半下降的序列.图:

在此输入图像描述

("V"是指前半部分下降,另一部分上升的序列,"A"是指前半部分上升,另一半下降的序列.

其他类型的序列的结果看起来像我期望的那样,但是我的算法可能有问题吗?

void quicksort(int l,int p,int *tab)
{
int i=l,j=p,x=tab[(l+p)/2],w; //x - pivot
do 
{
    while (tab[i]<x)
    {
        i++;
    }
    while (x<tab[j])
    {
        j--;
    }
    if (i<=j)
    {
        w=tab[i];
        tab[i]=tab[j];
        tab[j]=w;
        i++;
        j--;
    }
}
while (i<=j);
if (l<j)
{
    quicksort(l,j,tab);
}
if (i<p)
{
    quicksort(i,p,tab);
}
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道是什么导致了这种奇怪的结果?

c++ algorithm performance quicksort time-complexity

12
推荐指数
2
解决办法
895
查看次数

Java中数组内存使用开销的原因是什么?

在Java中,字符数据类型char用2个字节表示.n字符数组char[]2n+24字节表示.

通常,存在24用于存储n对象数组的字节开销(至少如果对象是基本类型).

为什么我们需要这些额外的24个字节?它们是如何使用的?

编辑(2015年7月2日).它带给我的注意,在回答这个问题是提供了一个评论这里的程序员StackExchange.

java arrays performance jvm vm-implementation

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

用于解析 BibTeX 的库

我正在寻找用于解析BibTeX文件的 Javascript 库。理想情况下,我希望能够引用论文并从 BibTeX 数据库(扩展名为.bib 的文件)生成出版物列表。关于我应该搭配什么有什么建议吗?

我知道bibtex-js。还有其他可用的吗?

html javascript css latex bibtex

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

红黑树与安德森树

为什么有人会喜欢红黑树安德森树,因为后者比前者简单得多,据说它在实践中达到了几乎相同的性能?

algorithm performance red-black-tree data-structures

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

枚举中有大量常量

我有一个可用的坐标参考系统列表,我希望将其表示为枚举,如下所示:

import enum


class CRS(enum.Enum):
    WGS84 = '4326'
    POP_WEB = '3857'
    UTM_33N = '3767'
    # etc. etc.
Run Code Online (Sandbox Code Playgroud)

当我们只支持几个坐标系统时,这工作得很好,但是现在我们已经决定支持大约60个其他坐标系统,这个列表会变得很大.

是否可以手动输入列表?

python enums python-3.x

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