我目前正在开发一个需要尽可能少的外部依赖项的C++项目,因此我非常关注STL和Boost.到目前为止,在C++方面,我几乎完全生活在Qt-land.一般来说,我倾向于使用C#和Python.
今天我想检查是否std::vector包含某个项目.有了Qt,我会这样做:
QList< int > list;
list.append( 1 );
list.append( 2 );
list.append( 3 );
if ( list.contains( 2 ) )
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
很好,可读.但std::vector没有contains方法,这是一个惊喜.好的...这样的STL成语是什么?搜索周围,似乎是这样的:
std::vector< int > list;
list.push_back( 1 );
list.push_back( 2 );
list.push_back( 3 );
std::vector< int >::const_iterator result =
std::find( list.begin(), list.end(), 2 );
if ( result != list.end() )
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
那(对我来说)难以理解,而且太冗长了.所以我发现自己编写了一个实用函数,它接受一个向量和一个值,并bool根据是否找到值返回.基本上,模板化的contains()方法; 上述std::find调用的包装器.然后,我可以以类似于Qt示例的方式使用它.
我有几个类似的实用函数,它们可以包装其他STL惯用语,而不是其他原因,但可读性增加(感知).我想知道的是......这是一个坏主意吗?其他人也这样做吗?我错过了一些关键的东西吗 代码将在某一时刻成为OSS,而我宁愿做一些其他C++开发人员会觉得奇怪的特殊事物.
我感兴趣的是,如果我使用C或C++编译器的观点有什么不同:
if (value == a) {
...
}
else if (value == b) {
...
}
else if (value == c) {
...
}
Run Code Online (Sandbox Code Playgroud)
与
switch (value) {
case a:
...
break;
case b:
...
break;
case c:
...
break;
}
Run Code Online (Sandbox Code Playgroud)
我觉得没有区别,只有句法.有谁知道更多吗?
谢谢,Boda Cydo.
提出一个单独的问题,与对WPF 4答案的评论有关:DataGridColumnHeader发生了什么?
看来我可以在UserControl中使用DataGridHeaderBorder,在ResourceDictionary中独立使用,但不能在Style的模板设置器中使用.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<!-- Works -->
<DataTemplate x:Key="yomama">
<DataGridColumnHeader />
</DataTemplate>
<!-- Compile Error: error MC3074: The tag 'DataGridHeaderBorder' does not exist in XML namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'. -->
<Style x:Key="{x:Type DataGridRowHeader}"
TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRowHeader}">
<Grid>
<DataGridHeaderBorder></DataGridHeaderBorder>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
如果我使用xmlns,我可以让它工作:dg ="http://schemas.microsoft.com/wpf/2008/toolkit",即使我没有在项目中引用WPFToolkit.我已经验证我已经设置为.NET4并引用了PresentationFramework v4.
谢谢你帮我删除了dg:hack.
JdbcTemplate对象和SimpleJdbcTemplate之间有什么区别?
在我的项目中,我一般都使用文本.我发现预处理可能非常慢.所以我想问你是否知道如何优化我的代码.流程是这样的:
获取HTML页面 - >(以纯文本 - >词干 - >删除停用词) - >进一步文本处理
括号中有预处理步骤.该应用程序运行在大约10.265秒,但预处理需要9.18秒!这是预处理50个HTML页面的时间(不包括下载).
我使用HtmlAgilityPack库将HTML转换为纯文本.这很快.转换1个文档需要2.5ms,所以它相对比较好.
问题出现了.阻止一个文档需要120毫秒.不幸的是,那些HTML页面是波兰语.用C#编写的波兰语不存在词干.我知道只有2个免费使用Java编写:stempel和morfologic.我借助IKVM软件将stempel.jar预编译为stempel.dll.所以没有更多的事要做.
消除停用词也需要很多时间(1个文档约70毫秒).它是这样完成的:
result = Regex.Replace(text.ToLower(), @"(([-]|[.]|[-.]|[0-9])?[0-9]*([.]|[,])*[0-9]+)|(\b\w{1,2}\b)|([^\w])", " ");
while (stopwords.MoveNext())
{
string stopword = stopwords.Current.ToString();
result = Regex.Replace(result, "(\\b"+stopword+"\\b)", " ");
}
return result;
Run Code Online (Sandbox Code Playgroud)
首先,我删除所有数字,特殊字符,单词和双字母单词.然后在循环中删除停用词.大概有270个停用词.
有可能让它更快吗?
编辑:
我想要做的是删除所有不超过2个字母的单词.所以我想把所有特殊的字符(包括'.',',','?','!'等)数字,停止字样.我只需要用于数据挖掘的纯语言.
我有这个webprojec,我必须从另一个EJB项目添加一个jar.通常我会右键单击webproject并转到属性 - > Java EE Module Dependencies.我不知道是不是因为我升级了eclipse,或者我做错了什么,但我在属性窗口中找不到"Java EE Module Dependencies".这两个项目都与同一个EAR链接,因此EJB jar文件就在那里!
任何想法我做错了或其他方式我可以附加EJB的JAR文件?我只允许使用eclipse,所以netbeans不是一个选项.
谢谢!
编辑:基本上,这是我想要做的,但那个特定的面板不会出现......
我正在使用Qt中的一个小应用程序,我正在使用SQL库和SQLite作为数据库.到目前为止,这已经很好了.的QSqlQuery类只提供了一种通过获取列值的方法的索引,而不是字段名称.但是,使用该record()函数可以将查询中的当前行转换为a QSqlRecord,其具有value()按字段名称获取值的功能.
所以,这很好,并允许我编写更短更清晰的代码,但像下面这样的连接查询会带来问题:
SELECT t1.*, t2.* FROM table1 AS t1, table2 AS t2 WHERE t1.table2_id=t2.id
Run Code Online (Sandbox Code Playgroud)
因此我们正常执行此查询,并将行转换为记录.但事实证明,其中的列名QSqlRecord不以表名为前缀 - 例如,id在记录对象中有两列被调用.这显然有点问题.
什么是这个问题的最佳解决方案?
(我在Qt bug跟踪器中发现了这个问题,但它没有多大帮助.)
什么是最常用的5-10个jQuery本机API函数?(请不要建议jQuery()函数本身,因为毫无疑问这是最常用的一个)如果有可能请提供他们所涵盖的风景.
提出这个问题的原因是我试图为Ample SDK JavaScript GUI Framework创建类似jQuery的API (主要是重新指向函数,这要归功于所有功能实现).这个框架已经有了标准的API(DOM Level 2-3),但是从我听到的情况来看,许多开发人员并不熟悉DOM API,其他人不喜欢这些API,但他们喜欢简洁的jQuery API(兼具方便的功能和流畅性)编程实践)
function validCleanHtml( $unclosedString )
{
preg_match_all( "/<([^\/]\w*)>/", $closedString = $unclosedString, $tags );
for ( $i = count( $tags[1] ) - 1; $i >= 0; $i-- )
{
$tag = $tags[1][$i];
if ( substr_count( $closedString, "</$tag>" ) < substr_count( $closedString, "<$tag>" ) )
$closedString .= "</$tag>";
}
$validTags = "<em><strong>";
$validClosedString = strip_tags( $closedString, $validTags );
return $validClosedString;
}
Run Code Online (Sandbox Code Playgroud)
好吧我想要的是启用2个html,em和强大,这是否只是从xss安全?如果不是我们如何保护它?
我尝试过$.ajaxStart(function(){}),但它并没有取代它,而是附加了.