小编eth*_*ham的帖子

在c#字典中只有一个查找的查找或插入

我是一名前C++/STL程序员,试图使用c#/ .NET技术编写快速行进算法...

我正在搜索等效的STL方法"map :: insert",如果不存在,则在给定键处插入值,否则返回现有键值对的迭代器.

我找到的唯一方法是使用两个查找:一个在TryGetValue中,另一个在Add方法中:

List<Point> list;
if (!_dictionary.TryGetValue (pcost, out list))
{
    list = new List<Point> ();
    dictionary.Add (pcost, list);
}
list.Add (new Point { X = n.x, Y = n.y });
Run Code Online (Sandbox Code Playgroud)

是否有一些东西可以解释为什么使用.NET容器不可能?还是我错过了一些观点?

谢谢.

c# lookup comparison performance stl

10
推荐指数
2
解决办法
3724
查看次数

Lambda 黑魔法采取不同类型

试图找到另一种简单地序列化我的代码的方法,我有一个愚蠢的想法来尝试这个不可能的事情。但它奏效了。我真的很想知道为什么:

template <typename C>
void f(C c)
{
    int a = 1;
    float b = 1.5f;
    c(a);
    c(b);
}

int main()
{
    f([](auto v){
        std::cerr << v << "\n";
    });
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我查看了生成的程序集(g++-9.3 -O0 -g -S -fverbose-asm test.cpp -o test.s),似乎生成了两个不同的 lambda:一个采用浮点数,另一个采用一个整数。这是黑魔法吗?有没有人知道标准并且可以对此进行更多解释?

c++ lambda auto

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

标签 统计

auto ×1

c# ×1

c++ ×1

comparison ×1

lambda ×1

lookup ×1

performance ×1

stl ×1