小编dan*_*nio的帖子

在STL映射中,使用map :: insert比[]更好吗?

不久前,我与一位同事讨论了如何在STL 地图中插入值.我更喜欢 map[key] = value; 因为它感觉自然而且阅读清晰,而他更喜欢 map.insert(std::make_pair(key, value))

我刚刚问他,我们都不记得插入更好的原因,但我确信这不仅仅是一种风格偏好,而是有一个技术原因,如效率.在SGI STL参考只是说"严格地说,这个成员函数是不必要的:它的存在只是为了方便."

任何人都可以告诉我这个理由,还是我只是梦想有一个?

c++ stl stdmap map

199
推荐指数
8
解决办法
16万
查看次数

确定URL是否是PHP中的图像的最佳方法

使用PHP,给定URL,我如何确定它是否是图像?

URL没有上下文 - 它只是在纯文本文件的中间,或者可能只是一个字符串.

我不希望高开销(例如,读取URL的内容),因为可以在页面上调用许多URL.鉴于这种限制,所有图像都不是必需的,但我想要一个相当不错的猜测.

目前我只是在查看文件扩展名,但感觉应该有比这更好的方法.

这是我目前拥有的:

  function isImage( $url )
  {
    $pos = strrpos( $url, ".");
    if ($pos === false)
      return false;
    $ext = strtolower(trim(substr( $url, $pos)));
    $imgExts = array(".gif", ".jpg", ".jpeg", ".png", ".tiff", ".tif"); // this is far from complete but that's always going to be the case...
    if ( in_array($ext, $imgExts) )
      return true;
    return false;
  }
Run Code Online (Sandbox Code Playgroud)

编辑:如果它对其他任何人有用,最后的功能是使用Emil H的答案:

  function isImage($url)
  {
     $params = array('http' => array(
                  'method' => 'HEAD'
               ));
     $ctx = stream_context_create($params);
     $fp = …
Run Code Online (Sandbox Code Playgroud)

php url image

53
推荐指数
5
解决办法
4万
查看次数

如何检测字符串列表中的公共子字符串

给定一组字符串,例如:

EFgreen
EFgrey
EntireS1
EntireS2
J27RedP1
J27GreenP1
J27RedP2
J27GreenP2
JournalP1Black
JournalP1Blue
JournalP1Green
JournalP1Red
JournalP2Black
JournalP2Blue
JournalP2Green
Run Code Online (Sandbox Code Playgroud)

我希望能够检测到这些是三组文件:

  • EntireS [1,2]
  • J27 [红色,绿色] P [1,2]
  • JournalP [1,2] [红,绿,蓝]

有没有任何已知的方法来解决这个问题 - 我可以阅读任何已发表的论文吗?

我正在考虑的方法是每个字符串查看所有其他字符串并查找常见字符和不同字符的位置,尝试查找最常见的字符串集,但我担心这不是非常有效并且可能会给出误报.

请注意,这与"如何检测文件名中的常见字符串组"不同,因为它假定字符串后面始终有一系列数字.

algorithm pattern-matching

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

如何配置Visual Studio以使用不同的源控件提供程序

我参与了很多项目,每个项目都有自己的源代码控制提供商.有没有办法配置Visual Studio 2010以基于每个项目自动选择正确的源代码控制?或者是每个用户级别的Tools - Options - Source Control插件?

让我澄清一下发生了什么.我有一个使用Vault的项目.当我打开它时,VS将Source Control设置为Vault.然后我关闭项目(解决方案)并打开另一个使用Mercurial(VisualHG)的解决方案我检查源控件插件并且仍然选择了Vault.为什么?是否可以自动选择正确的源控件?

version-control visual-studio-2010

21
推荐指数
1
解决办法
1万
查看次数

在Visual C++中是否有相当于gcc的-Wshadow

-Wshadow将"当局部变量影响另一个局部变量时发出警告." Visual C++(2008)中是否存在等价物?我试过/ W4但它没有接受它.我也试过Cppcheck,但也没看到.

例如,如果我无意中做了:

class A
{
        private:
                int memberVar;
        public:
                void fn()
                {
                        int memberVar = 27;
                }
};
Run Code Online (Sandbox Code Playgroud)

我真的很想知道它!

c++ compiler-warnings visual-c++

21
推荐指数
3
解决办法
3149
查看次数

如何在Windows上运行的PyQt应用程序中隐藏控制台窗口?

当然这有可能吗?我一直在寻找PyQt教程和文档,但无法找到它的答案.可能我只需要用不同的方式来表达我的搜索查询.

[编辑]

感谢PEZ的答案 - 更多细节,包括在Win32第20章的Python编程中使用.pyw扩展

python windows command-line pyqt

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

您将如何简化输入和退出ReaderWriterLock?

这对我来说似乎很吵.五行开销太多了.

m_Lock.EnterReadLock()
Try
    Return m_List.Count
Finally
    m_Lock.ExitReadLock()
End Try
Run Code Online (Sandbox Code Playgroud)

那你怎么这么简单呢?

.net c# vb.net parallel-processing readerwriterlock

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

评论是否显示添加/修改了哪些版本代码有用?

我工作的项目中的一些开发人员习惯于评论他们的代码以显示其添加的产品版本,例如

// added for superEnterpriseyWonder v2.5
string superMappingTag = MakeTag(extras);
if (superMappingTag.empty())
{
     autoMapping = false;
}
// end added for superEnterpriseyWonder v2.5
Run Code Online (Sandbox Code Playgroud)

每当我看到这个,我的血压升高,我必须花5分钟浏览SO来冷却.在我看来,他们不理解版本控制,如果我使用这种做法,源文件中的每一行都会是关于何时添加内容的评论.我正在考虑从我工作的文件中删除所有这些评论,但我想知道这只是我挑剔而且这些评论真的有些价值吗?

version-control comments

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

Python - 测试属性抛出异常

鉴于:

def test_to_check_exception_is_thrown(self):
    # Arrange
    c = Class()
    # Act and Assert
    self.assertRaises(NameError, c.do_something)
Run Code Online (Sandbox Code Playgroud)

如果do_something抛出异常则测试通过.

但是我有一个属性,当我替换时c.do_something,c.name = "Name"我得到一个关于我的测试模块没有被导入的错误,Eclipse突出显示了等号.

如何测试属性会引发异常?

编辑:

setattr并且getattr是新的我.在这种情况下,他们肯定有所帮助,谢谢.

python ironpython unit-testing properties

11
推荐指数
3
解决办法
4340
查看次数

如何使xargs用-n附加尾随参数?

xargs擅长插入初始参数:

seq 0 10 | xargs -n 3 echo foo
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

foo 0 1 2
foo 3 4 5
foo 6 7 8
foo 9 10
Run Code Online (Sandbox Code Playgroud)

当我还想要尾随参数时该怎么办?也就是说,什么命令:

seq 0 10 | xargs -n 3 <WHAT GOES HERE?>
Run Code Online (Sandbox Code Playgroud)

将产生以下期望的输出:

foo 0 1 2 bar
foo 3 4 5 bar
foo 6 7 8 bar
foo 9 10 bar
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

seq 0 10 | xargs -n 3 -I {} echo foo {} bar
Run Code Online (Sandbox Code Playgroud)

这几乎是正确的,除了它显然在每个命令行中强制使用一项,这不是我想要的:

foo 0 bar
foo 1 bar
foo 2 …
Run Code Online (Sandbox Code Playgroud)

xargs

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