小编Zac*_*ack的帖子

对点分隔数字列表进行排序,如软件版本

我有一个包含版本字符串的列表,例如:

versions_list = ["1.1.2", "1.0.0", "1.3.3", "1.0.12", "1.0.2"]
Run Code Online (Sandbox Code Playgroud)

我想对它进行排序,结果将是这样的:

versions_list = ["1.0.0", "1.0.2", "1.0.12", "1.1.2", "1.3.3"]
Run Code Online (Sandbox Code Playgroud)

数字的优先顺序显然应该是从左到右,它应该是降序.所以1.2.3来之前2.2.32.2.2之前2.2.3.

我如何在Python中执行此操作?

python

62
推荐指数
4
解决办法
2万
查看次数

附加到boost :: filesystem :: path

boost::filesystem::path手头有一点,我想在它上面添加一个字符串(或路径).

boost::filesystem::path p("c:\\dir");
p.append(".foo"); // should result in p pointing to c:\dir.foo
Run Code Online (Sandbox Code Playgroud)

唯一的过载boost::filesystem::pathappend需要打两次InputIterator秒.

到目前为止,我的解决方案是执行以下操作:

boost::filesystem::path p2(std::string(p.string()).append(".foo"));
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

c++ boost

32
推荐指数
4
解决办法
6万
查看次数

成员初始化列表中的条件运算符

假设我有这个课程:

class foo
{
public:
    foo() { }
    foo(const std::string& s) : _s(s) { }

private:
    std::string _s;
};
Run Code Online (Sandbox Code Playgroud)

哪个是另一个类的成员:

class bar
{
public:
    bar(bool condition) : 
       _f(condition ? "go to string constructor" : **go to empty ctor**) 
    { 
    }

private:
    foo _f;
};
Run Code Online (Sandbox Code Playgroud)

当初始化_fbar的成员初始化列表中,我想选择哪个构造函数foo来调用基于condition.

我可以放什么而不是go to empty ctor让它工作?我想到了foo(),还有另一种方式吗?

c++

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

Visual Studio 2010和boost :: bind

我有这个使用boost :: bind的简单代码:

#include <boost/bind.hpp>
#include <utility>
#include <vector>
#include <iterator>
#include <algorithm>

int main()
{
    std::vector<int> a;
    std::vector<std::pair<bool,int> > b;

    a.push_back(1);
    a.push_back(2);
    a.push_back(3);

    std::transform(a.begin(), a.end(), std::back_inserter(b),
                   boost::bind(std::make_pair<bool, int>, false, _1));
}
Run Code Online (Sandbox Code Playgroud)

我在VS2010 RC中遇到了大量错误,例如:

Error   1   error C2780: 'boost::_bi::bind_t<_bi::dm_result<MT::* ,A1>::type,boost::_mfi::dm<M,T>,_bi::list_av_1<A1>::type> boost::bind(M T::* ,A1)' : expects 2 arguments - 3 provided c:\projects\testtuple\main.cpp  18  
Error   2   error C2780: 'boost::_bi::bind_t<Rt2,boost::_mfi::cmf8<R,T,B1,B2,B3,B4,B5,B6,B7,B8>,_bi::list_av_9<A1,A2,A3,A4,A5,A6,A7,A8,A9>::type> boost::bind(boost::type<T>,R (__thiscall T::* )(B1,B2,B3,B4,B5,B6,B7,B8) const,A1,A2,A3,A4,A5,A6,A7,A8,A9)' : expects 11 arguments - 3 provided   c:\projects\testtuple\main.cpp  18
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?如果这是编译器中的错误,我该如何解决它?

编辑:添加了整个测试用例.

澄清:代码在VS2008中编译.

c++ boost visual-studio-2010

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

在O(lgn)中提取中值和第二个最小元素的数据结构

我需要找到满足这些要求的数据结构:

  • 可以从O(n)中的n个项目列表构建它
  • 插入一个项目需要O(lgn)
  • 提取中位数需要O(lgn)
  • 提取第二个最小项目需要O(lgn)

对于前三个要求,这是有效的:将最多堆中的n/2个最小项保持为最小堆中的n/2个最小项.这些堆的根将是下/上中位数.

但我坚持第四个要求.有任何想法吗?

data-structures

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

绘制(Cormen)红黑树插入时的奇怪结果

我根据Cormen的伪代码用Python中的Red-Black树实现Introduction to Algorithms.

我想在我自己的眼睛看到我insert是真的O(logn),所以我绘制它需要插入的时间n=1, 10, 20, ..., 5000节点到树.

这是结果:

在此输入图像描述

x轴是ny轴是它率先在时间毫秒.

对我来说,图形看起来比对数更线性.有什么可以解释的?

python big-o red-black-tree

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

Mercurial的廉价克隆/本地分支

几天前刚刚开始与Mercurial合作,有些事我不明白.

我有一个我想做的实验性的事情,所以正常的做法是克隆我的存储库,处理克隆,如果最终我想保留这些更改,我会将它们推送到我的主存储库.

问题是克隆我的存储库需要很多时间(我们有很多代码),只编译克隆的副本需要一个小时.
所以我需要以某种方式在不同的存储库上工作,但仍然在我原来的工作副本中.

输入本地分支.

问题只是创建一个本地分支需要永远,并与他们合作也不是那么有趣.因为当在本地分支之间移动时不会"恢复"到目标分支状态时,我必须发出一个hg purge(删除在移动的分支中添加的文件)然后hg update -c(以恢复移动的分支中的已修改文件).(注意:我确实尝试过PK11 fork的本地分支扩展,它有一个简单的本地分支创建崩溃异常)

在一天结束时,这太复杂了.我有什么选择?

mercurial dvcs

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