小编Ala*_*ing的帖子

JSON和XML比较

我想知道哪个更快:XML和JSON?什么时候使用哪一个?

xml json

268
推荐指数
6
解决办法
36万
查看次数

使用C++ 11 auto关键字多少钱?

我一直在使用autoC++ 11标准中提供的新关键字来处理复杂模板类型,这是我认为它的设计目标.但我也用它来做:

auto foo = std::make_shared<Foo>();
Run Code Online (Sandbox Code Playgroud)

更加怀疑的是:

auto foo = bla(); // where bla() return a shared_ptr<Foo>
Run Code Online (Sandbox Code Playgroud)

我没有看到很多关于这个话题的讨论.似乎auto可能过度使用,因为类型通常是文档和健全性检查的一种形式.您在哪里绘制使用线auto以及此新功能的推荐用例是什么?

澄清:我不是要求哲学观点; 我要求标准委员会对该关键字的预期用途,可能还有关于如何在实践中实现该预期用途的评论.

旁注:此问题已移至SE.Programmers,然后返回Stack Overflow.关于这一点的讨论可以在这个元问题中找到.

c++ types type-inference auto c++11

210
推荐指数
8
解决办法
4万
查看次数

C++将vector <int>转换为vector <double>

什么是一个转换的好干净的方式std::vector<int> intVecstd::vector<double> doubleVec.或者,更一般地说,转换两种可转换类型的向量?

c++ stl vector type-conversion

87
推荐指数
2
解决办法
6万
查看次数

我应该从使用boost :: shared_ptr切换到std :: shared_ptr吗?

我想在GCC中启用对C++ 0x的支持-std=c++0x.我并不一定需要GCC 4.5中的任何当前支持的C++ 11功能(很快就会有4.6),但我想开始习惯它们.例如,在我使用迭代器的一些地方,auto类型会很有用.

但同样,我不需要任何当前支持的功能.这里的目标是鼓励我将新标准的特征融入我的编程"词汇"中.

根据您对C++ 11支持的了解,在GCC中启用它是一个好主意,然后通过例如从使用切换boost::shared_ptrstd::shared_ptr专用来实现它,因为两者不混合?

PS:我知道这个比较不同口味的好问题,shared_ptr但是我要求在标准最终确定之前提出更高级别的建议.另一种说法是,当像GCC这样的编译器说它支持"实验性功能"时,这是否意味着我可能会在编译过程中遇到奇怪的错误,这些错误将成为主要的时间汇,并且是StackOverflow上一个神秘问题的来源?

编辑:我决定退回,std::shared_ptr因为我只是不相信它在GCC 4.5中的支持,如本问题中的示例所示.

c++ boost stl shared-ptr c++11

66
推荐指数
4
解决办法
3万
查看次数

我应该使用std :: for_each吗?

我总是试图更多地了解我使用的语言(不同的样式,框架,模式等).我注意到我从未使用过,std::for_each所以我想也许我应该开始.在这种情况下的目标是扩展我的思想,而不是在某种程度上改进代码(可读性,表达性,紧凑性等).

因此,考虑到上下文,使用std::for_each简单的任务是一个好主意,比如打印出一个向量:

for_each(v.begin(), v.end(), [](int n) { cout << n << endl; }
Run Code Online (Sandbox Code Playgroud)

([](int n)作为lambda函数).代替:

for(int i=0; i<v.size(); i++) { cout << v[i] << endl; }
Run Code Online (Sandbox Code Playgroud)

我希望这个问题似乎没有意义.我想这几乎问了一个更大的问题......应的中级程序员使用的语言特性,即使他并不真的需要在这个时候只是让他能够理解该功能的时候,实际上可能会受益非浅更好它.虽然可能已经提出了这个更大的问题(例如这里).

c++ foreach lambda for-loop stl

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

std :: sort检查向量是否已经排序?

我相信C++标准std::sort并不能保证已经排序的列表上的O(n)性能.但是,我仍然想知道您是否知道STL(GCC,MSVC等)的任何实现std::is_sorted是否在执行排序算法之前进行检查?

问另一种方式,人们可以期望(在没有保证的情况下)std::sort在已排序的容器上运行会有什么性能?

旁注:我在我的博客上发布 GCC 4.5的一些基准测试,并启用了C++ 0x.结果如下:

std :: sort和std :: is_sorted的比较

c++ sorting gcc stl c++11

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

C++使用非静态函数重载静态函数

我想打印两个不同的东西,这取决于一个函数是静态调用Foo::print()还是来自一个实例Foo foo; foo.print();

编辑:这是一个绝对不起作用的类定义,已经有几个人回答了.

class Foo {
    string bla;
    Foo() { bla = "nonstatic"; }

    void print() { cout << bla << endl; }
    static void print() { cout << "static" << endl; }
};
Run Code Online (Sandbox Code Playgroud)

但是,有没有一种很好的方法来实现这种效果?基本上,我想做:

if(this is a static call)
    do one thing
else
    do another thing
Run Code Online (Sandbox Code Playgroud)

换句话说,我知道PHP可以检查是否*this定义了变量,以确定是否静态调用该函数.C++是否具有相同的功能?

c++ static overloading non-static

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

DokuWiki中的内联代码

我正在寻找一种方法来将代码作为DokuWiki中段落的一部分包含在内,就像我可以通过在StackOverflow中添加反引号转义一样like _so_.只需<code>bla</code>在自己的行上添加代码.

markup wiki syntax-highlighting dokuwiki inline-code

34
推荐指数
2
解决办法
9989
查看次数

使用C++ 0x枚举类的Emacs cc模式缩进问题

Emacs cc-mode似乎还没有识别enum classC++ 0x中引入的类型安全.我得到的结果是第二个,第三个等枚举的双缩进:

enum class Color {
    Blue,
        Red,
        Orange,
        Green
        };
Run Code Online (Sandbox Code Playgroud)

我想要的是:

enum class Color {
    Blue,
    Red,
    Orange,
    Green
};
Run Code Online (Sandbox Code Playgroud)

你能推荐一个好的命令添加到.emacs哪个会使cc模式处理enum class它与处理普通旧模式的方式相同enum吗?

c++ emacs enums indentation c++11

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

清除矢量会影响其容量吗?

我实例化了一个std::vector foo(1000).

foo.size()现在是1000,foo.capacity()也是1000.

如果我清除矢量foo.clear(),size()现在是0,但是什么是capacity()?标准是否对此有所说明?

c++ size vector std capacity

24
推荐指数
2
解决办法
9407
查看次数