Tag: C#的

在C#中的机器学习库

C#中有没有机器学习库? 我在WEKA之后 。 谢谢。

为什么List <T> .ForEach允许其列表被修改?

如果我使用: var strings = new List<string> { "sample" }; foreach (string s in strings) { Console.WriteLine(s); strings.Add(s + "!"); } 在foreach的Add抛出一个InvalidOperationExceptionexception(集合被修改;枚举操作可能不会执行),我认为这是合乎逻辑的,因为我们正在从我们脚下扯下地毯。 但是,如果我使用: var strings = new List<string> { "sample" }; strings.ForEach(s => { Console.WriteLine(s); strings.Add(s + "!"); }); 它通过循环立即在脚中自我射击,直到抛出OutOfMemoryException。 这对我来说是一个惊喜,因为我一直认为List.ForEach不是为了foreach就是为了包装。 有没有人有解释如何和为什么这种行为? (由ForEach循环为无限重复的generics列表启发)

gcc std :: unordered_map实现缓慢吗? 如果是这样 – 为什么?

我们正在用C ++开发一个高性能的关键软件。 在那里我们需要一个并发哈希映射并实现一个。 所以我们写了一个基准来计算出我们的并发哈希映射与std::unordered_map相比要慢多less。 但是, std::unordered_map似乎是非常慢…所以这是我们的微基准(对于并发映射,我们产生了一个新的线程,以确保locking不会被优化,注意我从来没有inser 0,因为我也基准google::dense_hash_map ,需要一个空值): boost::random::mt19937 rng; boost::random::uniform_int_distribution<> dist(std::numeric_limits<uint64_t>::min(), std::numeric_limits<uint64_t>::max()); std::vector<uint64_t> vec(SIZE); for (int i = 0; i < SIZE; ++i) { uint64_t val = 0; while (val == 0) { val = dist(rng); } vec[i] = val; } std::unordered_map<int, long double> map; auto begin = std::chrono::high_resolution_clock::now(); for (int i = 0; […]

我如何可移植地调用一些C ++函数,在某些平台上使用char **,而在其他平台上使用const char **?

在我的Linux(和OS X)机器上, iconv()函数具有这个原型: size_t iconv (iconv_t, char **inbuf… 而在FreeBSD上看起来像这样: size_t iconv (iconv_t, const char **inbuf… 我想我的C ++代码在两个平台上构build。 使用C编译器,传递char**作为const char**参数(反之亦然)通常会发出纯粹的警告; 然而在C ++中这是一个致命的错误。 所以如果我传递一个char** ,它将不会在BSD上编译,如果我传递一个const char** ,它将不能在Linux / OS X上编译。我怎样才能编写在两个编译的代码,而不诉诸试图检测平台? 我有一个(失败的)想法是提供一个本地原型来覆盖头部提供的任何东西: void myfunc(void) { size_t iconv (iconv_t, char **inbuf); iconv(foo, ptr); } 这样做是因为iconv需要C链接,并且你不能在一个函数中放置extern "C" (为什么不呢?) 我想到的最好的工作思路是投射函数指针本身: typedef void (*func_t)(iconv_t, const char **); ((func_t)(iconv))(foo, ptr); 但这有可能掩盖其他更严重的错误。

在C ++中“毒化一个函数”意味着什么?

在斯科特•舒尔(Scott Schurr) 在CppCon的“介绍constexpr ”的演讲结束时 ,他问道:“有没有办法让一个function中毒呢? 然后他解释说,这可以通过以下方式完成(尽pipe以非标准方式): 投入一个constexpr函数 声明一个无法parsing的extern const char* throw在引用未解决的extern 我觉得我在这里有一点点深刻,但我很好奇: 什么意思是“毒化一个function”? 他概括的技术的重要性/有用性是什么?

帮助configurationVim的C + +

我想让我的C ++编辑器。 我有很小的工作经验,需要帮助configurationvim来使用c ++。 我需要这样的function 代码完整(适用于stl和我的课程) 在.cc和.h文件之间切换 可能会有更多的技巧,你和C ++和vim大师。 可能是你可以提供一些configuration(有解释),或指向我可以使用的教程,插件的链接?

差异:std :: runtime_error vs std :: exception()

std::runtime_error和std::exception什么区别? 什么是适当的使用每个? 他们为什么不同呢?

从using()语句中返回是否有任何副作用?

从获取DataContext的using语句中返回方法值似乎总是正常工作,如下所示: public static Transaction GetMostRecentTransaction(int singleId) { using (var db = new DataClasses1DataContext()) { var transaction = (from t in db.Transactions orderby t.WhenCreated descending where t.Id == singleId select t).SingleOrDefault(); return transaction; } } 但是我总是觉得我应该在使用括号之前closures一些东西 ,例如在using语句之前定义事务,在括号内获取它的值,然后在括号后面返回。 在使用括号之外定义和返回variables是否更好地实践或节约资源?

对于.NET的情况(兽)

我是一个.NET开发人员,我没有头皮屑。 我工作的公司使用C ++ Builder 6.自从构思以来,我们一直在开发本地代码。 我们的旗舰产品完全用本地代码编写。 用可爱的铃声,口哨,蓬松的兔子和可爱的小猫进入.NET框架。 我跌倒,勾线,坠子。 我相信pipe理层认为.NET绝对是我们所有新软件开发的新框架,我们应该尽快开始迁移现有的代码。 有了所有的好处,它并不需要太多的说服力。 他们像往常一样接受我的build议。 在这一点上,我开始开发我的第一个.NET应用程序。 这一切都按计划进行。 该项目只是我们产品的一个组成部分。 所以我开始为这个新组件创build一个安装程序。 作为一家公司,我们非常自豪能够为用户提供尽可能简单的服务。 即使是微软,数千名开发人员也不会像我们那样创build安装程序。 例如,当您安装Microsoft CRM时,您将只能获得需要安装的故障和先决条件列表,然后才能继续。 不是我们。 决不。 如果你需要的东西,我们会为你安装。 想象一下。 我们,启动EXE,为你… 这使得我们的装置感觉如此简单。 .NET Framework未安装? 没问题! 我们会为你做的。 需要SQL Native客户端? 精细! 现在的问题是,现在我们的解决scheme的一个组件是用.NET编写的,它使安装过程变得非常复杂。 在我甚至可以安装我们的产品之前,我需要执行以下操作: 检测是否安装了必备软件 如果不是,请安装它 确认它已成功安装 下一个先决条件 要安装.NET Framework,我首先需要Windows Installer 4.5。 但是对于不同的操作系统有不同的版本,所以我添加操作系统检测并启动正确的EXE。 哦,.NET框架已经封装了2K8,安装程序EXE不能运行,你必须运行OCSetup.exe参数来安装它。 叹。 所以它继续。 然后需要安装SQL Express 2005。 依赖性再次增加。 我认为pipe理层即使是微软也不会让用户这么容易。 他们的回答是,我们没有理由不这样做比他们更好。 我不能和这个争论,只不过我认为他们的方法有很好的理由。 突然,我们的安装程序是巨大的。 所有的.NET的先决条件,甚至没有谈到64位的支持,有一个完整的EXE范围的安装。 […]

如何申报朋友大会?

我在我的解决scheme中有2个项目: 大会(基础图书馆) testing程序集(NUnit) 我已经在第一个项目中宣布testing程序集为朋友程序集: [assembly: InternalsVisibleTo ("Company.Product.Tests")] 一切工作正常,直到我意识到我忘了设置解决scheme签署我的程序集。 所以创build了一个snk文件并设置了visual studio项目来签署第一个程序集(Basic Library)。 现在,当我编译第一个项目,我得到以下错误: 朋友组件参考“Company.Product.Tests”无效。 强名称签名的程序集必须在其InternalsVisibleTo声明中指定一个公钥。 我尝试使用sn工具从我的snk文件提取公钥,但它生成一个有线的二进制文件,我不确定如何使用。 我该如何解决这个问题?