我有一个代表DB对象的地图.我希望从中得到"众所周知"的价值观
std::map<std::string, std::string> dbo;
...
std::string val = map["foo"];
Run Code Online (Sandbox Code Playgroud)
一切都很好但是我觉得"foo"在每次通话时都被转换为临时字符串.当然,拥有一个常量的std :: string会更好(当然,与刚刚获取对象的磁盘IO相比,它可能只是一个很小的开销,但我认为它仍然是一个有效的问题).那么std :: string常量的正确习惯是什么?
例如 - 我可以
const std::string FOO = "foo";
Run Code Online (Sandbox Code Playgroud)
在hdr中,但后来我得到了多份副本
编辑:还没有回答说如何声明std :: string常量.忽略整个地图,STL等问题.很多代码都是以std :: string为导向的(我当然是这样)并且很自然地需要为它们设置常量而不需要为内存分配反复付费
EDIT2:从曼努埃尔手中接过PDF回答的二级问题,添加了一个不好习惯的例子
编辑3:答案摘要.请注意,我没有包含那些建议创建新字符串类的内容.我很失望,因为我希望有一个简单的东西只能在头文件中工作(如const char*const).无论如何
a)来自马克b
std::map<int, std::string> dict;
const int FOO_IDX = 1;
....
dict[FOO_IDX] = "foo";
....
std:string &val = dbo[dict[FOO_IDX]];
Run Code Online (Sandbox Code Playgroud)
b)来自vlad
// str.h
extern const std::string FOO;
// str.cpp
const std::string FOO = "foo";
Run Code Online (Sandbox Code Playgroud)
c)来自Roger P.
// really you cant do it
Run Code Online (Sandbox Code Playgroud)
(b)似乎与我想要的最接近,但有一个致命的缺陷.我不能拥有使用这些字符串的静态模块级代码,因为它们可能尚未构建.我想过(a)并且实际上在序列化对象时使用类似的技巧,发送索引而不是字符串,但对于通用解决方案来说似乎有很多管道.很遗憾(c)获胜,std:string 没有简单的常量
我需要获取子div的文本值.
<div id='first'>
<div id='first_child'>A</div>
<div id='second_child'>B</div>
<div id='third_child'>C</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我试图抓住价值B.我正在尝试这个,但它不起作用,
var text_val = $('#first').next('#second_child').val();
Run Code Online (Sandbox Code Playgroud) 我在谷歌搜索找到a case class和a 之间的差异class.每个人都提到当你想在类上进行模式匹配时,使用用例类.否则使用类并提及一些额外的额外津贴,如equals和hash code overriding.但这些是为什么应该使用案例类而不是类的唯一原因?
我想在Scala中这个功能应该有一些非常重要的原因.有什么解释或者是否有资源可以从中了解有关Scala案例类的更多信息?
假设我有一个如下所示的基本界面:
public interface IObjectProvider
{
IEnumerable<IObject> GetObjects();
}
Run Code Online (Sandbox Code Playgroud)
对象源是可能更新的某个后备存储,并且此接口的实现负责使用该后备存储.现在,我希望此接口的使用者能够在此接口提供的对象集合发生更改时执行操作.您将如何重构此界面以提供此功能?我希望结果可用于应用程序中的许多"提供者"接口,以获得良好的设计一致性.
示例:以下以简明易懂的方式提供此功能,但增加了重要的耦合(包括对.NET 4.0之前的代码中的WPF程序集的引用).我应该只使用它,因为我们知道一旦代码进入.NET 4.0,它将自动"更轻"吗?
public interface IObjectProvider
{
ReadOnlyObservableCollection<IObject> Objects
{
get;
}
}
Run Code Online (Sandbox Code Playgroud)
根据Reed的回答,我倾向于保持IObjectProvider接口不变,原因如下:
GetObjects()必然会实现INotifyCollectionChanged.还有另外两个案例,我仍然需要在我的设计中考虑:
我有一个应用程序,它将使用WCF向客户端提供各种数据块.但是,由于将返回的一些数据集的大小(这是因为客户端应用程序需要在列表中显示大量对象,而不是因为我在设计中只是懒惰)我达到邮件大小限制.
我对此有所期待,并计划实施数据分页/响应流(我相信Pablo Cibraro曾就此发表过一篇文章).但是,我看到一些使WCF数据服务看起来很酷的演示.我只是无法让它适合我.
我没有数据库后端,我不在IIS内部托管.我已经能够得到一些基本对象的例子,但是一旦我从我的应用程序中插入对象,它就不起作用 - 我得到一个请求错误,这似乎是无益的 - 它只是建议检查服务器日志而不建议我如何做到这一点.我怀疑它假设我正在使用IIS托管,IIS可能会记录它承载的数据服务的消息.
我尝试使用的一个相当简单的类是用于日志消息(我希望诊断仪表板式客户端能够远程显示服务器日志,比如说,过去24小时):
public class Message
{
public string Source { get; set; }
public MessageType Type { get; set; }
public DateTime Timestamp { get; set; }
public string MessageText { get; set; }
public override string ToString()
{
return string.Format("[{0}] [{1}] [{2}] {3}", Timestamp.ToString(), Source, Type, MessageText);
}
}
Run Code Online (Sandbox Code Playgroud)
使用这个类会产生错误,而如果我将它指向一个类,我将其模拟为测试(如Pablo的演示:http://msdn.microsoft.com/en-us/data/cc745968.aspx)然后它工作良好.有关为什么会这样做的任何想法,或者我如何从错误中获得有用的东西?
下面是我的服务定义和我用来公开我想要返回的集合的IQueryable <>实现的类(目前我只完成了Log,这是类型List<Message>)
public class DataServiceFacade
{
public IQueryable<Message> Log
{
get
{
return Program.Log.AsQueryable();
}
} …Run Code Online (Sandbox Code Playgroud) 根据Apple关于UISplitViewController(在新的iPad 3.2 SDK中)的文档,看起来他们打算只将它用作应用程序的根控制器.换句话说......就像你不能将UISplitViewController推到UINavigationController上一样,因为显然UINavigationController需要保持拆分视图.
任何人都可以确认这是否是UISplitViewController的真正限制?我希望在我的应用程序中使用我的UINavigationController层次结构中的几个级别的拆分视图,但看起来除非有办法,否则我将无法做到这一点.
谢谢!
让我们看看我的字符串看起来像这样:
NSString *longStr = @"AAAAA\nBBBBB\nCCCCC";
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能让UILabel显示这样的信息
AAAAA
BBBBB
CCCCC
我不认为\nUILabel会认可,所以我可以在NSString中放置任何东西,以便UILabel知道它必须在那里创建换行符吗?
有许多聚类算法可供使用.一种流行的算法是K-means,其中,基于给定数量的聚类,算法迭代以找到对象的最佳聚类.
您使用什么方法来确定k-means聚类中数据中的聚类数?
R中可用的任何包是否包含V-fold cross-validation确定正确簇数的方法?
另一种使用良好的方法是期望最大化(EM)算法,该算法为每个实例分配概率分布,该概率分布指示其属于每个聚类的概率.
这个算法是用R实现的吗?
如果是,是否可以通过交叉验证自动选择最佳簇数?
您更喜欢其他一些聚类方法吗?
我试图读取文件,我得到的错误是
java.io.FileNotFoundException: /homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations/gameTheoryAgentConfiguration.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at game.player.gametheoryagent.GameTheoryAgent.<init>(GameTheoryAgent.java:67)
at simulation.Simulator.createPlayer(Simulator.java:141)
at simulation.Simulator.main(Simulator.java:64)
Run Code Online (Sandbox Code Playgroud)
但是文件确实存在,只是为了仔细检查我给它777权限,如下所示:
tui% cd /homes/at1106/fourthYearComputing/Individual-Project/svn-workspace/trunk/Individual_Project/src/game/player/gametheoryagent/configurations
tui% ls -al
total 4
drwxrwxrwx 3 at1106 cs4 1024 2010-02-22 17:45 .
drwxrwxrwx 4 at1106 cs4 1024 2010-02-22 17:27 ..
-rwxrwxrwx 1 at1106 cs4 260 2010-02-22 17:31 gameTheoryAgentConfiguration.properties
drwxrwxrwx 6 at1106 cs4 1024 2010-02-22 17:41 .svn
Run Code Online (Sandbox Code Playgroud)
关于为什么我得到FNF例外的任何想法?
谢谢
调用的java代码:
File file = new File(pathToConfiguration)
Properties configuration = new Properties();
try{
configuration.load(new FileInputStream(file));
int RAISE_RATIO = Integer.parseInt(configuration.getProperty("raise_ratio")); …Run Code Online (Sandbox Code Playgroud) 我之前提出过这个问题并且因为它是一个副本而被关闭了,我接受并实际在Java问题中找到答案:拆分逗号分隔的字符串但忽略引号中的逗号,所以感谢发布它的人.
但是我已经遇到了另一个问题.显然我需要做的是当零或偶数个双引号时使用","作为我的分隔符,但也忽略括号中的任何",".
所以以下内容:
"Thanks,", "in advance,", "for("the", "help")"
Run Code Online (Sandbox Code Playgroud)
将标记为:
我不确定是否有任何修改我正在使用的当前正则表达式允许这样做,但任何指导将不胜感激.
line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
Run Code Online (Sandbox Code Playgroud)