问题列表 - 第31715页

为了可读性而包装STL习语是一个好主意吗?

我目前正在开发一个需要尽可能少的外部依赖项的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++ stl readability

11
推荐指数
2
解决办法
659
查看次数

在使用if,else if,else if,...和使用switch(){case A:... case B:...}之间C和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.

c

6
推荐指数
2
解决办法
992
查看次数

xaml样式中的WPF4 DataGridHeaderBorder

提出一个单独的问题,与对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.

wpf xaml wpfdatagrid wpf-4.0 datagridheaderborder

2
推荐指数
1
解决办法
5926
查看次数

Java Spring JdbcTemplate

JdbcTemplate对象和SimpleJdbcTemplate之间有什么区别?

java spring jdbc jdbctemplate

2
推荐指数
2
解决办法
6852
查看次数

快速文本预处理

在我的项目中,我一般都使用文本.我发现预处理可能非常慢.所以我想问你是否知道如何优化我的代码.流程是这样的:

获取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个字母的单词.所以我想把所有特殊的字符(包括'.',',','?','!'等)数字,停止字样.我只需要用于数据挖掘的纯语言.

c# regex text-processing

6
推荐指数
2
解决办法
3560
查看次数

Web项目中的Java EE模块依赖关系?

我有这个webprojec,我必须从另一个EJB项目添加一个jar.通常我会右键单击webproject并转到属性 - > Java EE Module Dependencies.我不知道是不是因为我升级了eclipse,或者我做错了什么,但我在属性窗口中找不到"Java EE Module Dependencies".这两个项目都与同一个EAR链接,因此EJB jar文件就在那里!

任何想法我做错了或其他方式我可以附加EJB的JAR文件?我只允许使用eclipse,所以netbeans不是一个选项.

谢谢!

编辑:基本上,这是我想要做的,但那个特定的面板不会出现......

java eclipse java-ee

6
推荐指数
1
解决办法
5881
查看次数

QtSql:QSqlRecord不保留表前缀

我正在使用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跟踪器中发现了这个问题,但它没有多大帮助.)

c++ qt

4
推荐指数
1
解决办法
664
查看次数

最有用的jQuery本机API函数

什么是最常用的5-10个jQuery本机API函数?(请不要建议jQuery()函数本身,因为毫无疑问这是最常用的一个)如果有可能请提供他们所涵盖的风景.

提出这个问题的原因是我试图为Ample SDK JavaScript GUI Framework创建类似jQuery的API (主要是重新指向函数,这要归功于所有功能实现).这个框架已经有了标准的API(DOM Level 2-3),但是从我听到的情况来看,许多开发人员并不熟悉DOM API,其他人不喜欢这些API,但他们喜欢简洁的jQuery API(兼具方便的功能和流畅性)编程实践)

javascript jquery

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

用PHP安全html过滤?

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安全?如果不是我们如何保护它?

html php filter

0
推荐指数
1
解决办法
4217
查看次数

如何取消注册设置为jQuery.ajaxStart()函数的处理程序?

我尝试过$.ajaxStart(function(){}),但它并没有取代它,而是附加了.

html javascript jquery

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