小编Kri*_*tel的帖子

为什么要使用无序容器?(C++)

我已经尝试过搜索但没找到任何东西.

我正在学习STL容器,并了解顺序和关联容器的优缺点,但是我不确定为什么有人会更喜欢无关容器而不是关联容器,因为它肯定不会影响元素的插入,查找和删除.

它纯粹是一种性能的东西,即它需要更多的处理才能插入/移除到关联容器,因为它必须经过排序?我不太了解系统方面的事情,但在我脑海中,我觉得无序容器需要比自动组织的容器更多"保养".

如果有人能说出一些亮点,那将非常感激.

c++ std unordered c++11

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

使用 Serilog 静态记录器将日志输出到 Xunit

我在我的项目中使用 serilog 使用静态记录器方法 - 能够在我的类库上调用 Log.X 而不是在任何地方注入记录器类,这很好也很容易。

但是,当涉及到单元/集成测试时,如果测试失败,那么查看类库中的错误日志将非常有益(对于集成测试更是如此)。

因为我没有将 ILogger 注入我的类(由于使用静态记录器),所以我无法创建将输出写入测试日志的模拟测试记录器。

有没有人设法使用 Serilog 全局(静态)记录器将消息输出到 XUnit?

logging integration-testing unit-testing xunit serilog

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

关于列表和对的混淆

所以我正在尝试尝试将名字和姓氏添加到双链表中.我有各种不同长度的文本文件,格式为"string,string",并使用list>来存储我的数据.

我正在使用此代码:

typedef std::list< std::pair<string,string> > listPair;
Run Code Online (Sandbox Code Playgroud)

...

list<pair<string, string> > mylist;
ifstream myFile; 
myFile.open("20.txt");

pair<string, string> stuff;
while (myFile >> stuff.first >> stuff.second)
{
    mylist.push_back(stuff);
}

listPair::iterator iter = mylist.begin();

for(;iter != mylist.end();iter++)
{
    string s = (*iter).first;
    cout << s << endl;
    string c = (*iter).second;
    cout << c << endl;
}
Run Code Online (Sandbox Code Playgroud)

现在我遇到的问题是,首先,列表中的最后一项没有被添加.像每个文件只是错过了终点线,所以这有点令人困惑.

另外,我正在做一个"mylist.size()"以确保所有的名字都被添加了,这让我感到困惑,因为对于一个包含99个名字的文本文件,即99行文字,它会说(不要忘了它)由于缺少最后一行,只读取98)列表的大小为48.

为什么48?这是因为我做了成对,这仍然没有意义,就好像它不是成对阅读实际上会有两倍左右,因为对只是将名字和姓氏作为一个值.

心中难以置信.

再次感谢您的帮助!

c++ size iterator list ifstream

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

我可以使用Professional键降级VS15 Enterprise试用版吗?

标题说明了一切,我安装了VS15企业版试用版并使用我的帐户登录以获得90天的试用期.现在它已经到了最后,我把Professional键认为它可能会降级功能,因为一位同事告诉我他很确定他做了同样的事情.

它没有用,所以我只是想知道是否有人可以确认我是否必须重新安装VS15(但专业版)?

visual-studio-2015

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

如何在.NET中创建表达式构建器

我已经编写了一些代码来允许在我们的网站上过滤产品,而且我的代码味道非常糟糕.用户可以选择1-*这些过滤器,这意味着我需要特定于该WHERE子句.

我想我正在寻找一种构建lambda表达式的方法,所以对于每个过滤器我都可以"修改"我的WHERE子句 - 但我不确定如何在.NET中执行此操作,并且必须有一种方法.

处于当前状态的代码(实际上是硬编码的,而不是动态的,添加更多过滤器选项会很麻烦).

public static class AgeGroups
{
    public static Dictionary<string, int> Items = new Dictionary<string, int>(){
        { "Modern (Less than 10 years old)", 1 },
        { "Retro (10 - 20 years old)", 2 },
        { "Vintage(20 - 70 years old)", 3 },
        { "Antique(70+ years old)", 4 }
    };

    public static IQueryable<ProductDTO> FilterAgeByGroup(IQueryable<ProductDTO> query, List<string> filters)
    {
        var values = new List<int>();
        var currentYear = DateTime.UtcNow.Year;
        foreach (var key in filters)
        {
            var …
Run Code Online (Sandbox Code Playgroud)

.net c# linq iqueryable linq-expressions

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