小编adl*_*adl的帖子

编写一个接受lambda表达式作为参数的函数

我有这样的方法

template<typename T, typename U>
map<T,U> mapMapValues(map<T,U> old, T (f)(T,U))
{
    map<T,U> new;
    for(auto it = old.begin(); it != old.end(); ++it)
    {
        new[it->first] = f(it->first,it->second);
    }
    return new; 
}
Run Code Online (Sandbox Code Playgroud)

而这个想法就是你这样称呼它

BOOST_AUTO_TEST_CASE(MapMapValues_basic)
{
    map<int,int> test;
    test[1] = 1;
    map<int,int> transformedMap = VlcFunctional::mapMapValues(test, 
        [&](int key, int value) -> int
        {
            return key + 1; 
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

但是我收到错误:没有函数模板"VlcFunctional :: mapMapValues"匹配参数列表参数类型的实例是:(std :: map,std :: allocator >>,__ lambda1)

知道我做错了什么吗?Visual Studio 2008和Intel C++编译器11.1

c++ lambda c++11

36
推荐指数
4
解决办法
3万
查看次数

在什么情况下提供纯虚函数的实现是有利的?

在C++中,给出纯虚函数的实现是合法的:

class C
{
public:
  virtual int f() = 0;
};

int C::f() 
{
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

你为什么要这样做?

相关问题:C++ faq lite包含一个例子:

class Funct {
public:
  virtual int doit(int x) = 0;
  virtual ~Funct() = 0;
};

inline Funct::~Funct() { }  // defined even though it's pure virtual; it's faster this way; trust me
Run Code Online (Sandbox Code Playgroud)

我不明白为什么析构函数被声明为纯虚拟然后实现; 我不明白为什么这应该更快的评论.

c++ performance pure-virtual

28
推荐指数
1
解决办法
2031
查看次数

在<table>中使用cellpadding ="2"cellspacing ="2"是否可以?

它是确定使用cellpadding="2" cellspacing="2"<table>?或者这些不是W3C推荐的,不符合网络标准吗?

CSS中的替代品有哪些?

更新:是否可以使用<td align="right" valign="top">

我的问题是内容和演示文稿的分离以及W3C的建议.

更新: 根据这个图表<table>只有alignbgcolor严格的版本是不允许的.那么允许其他属性是否可以<table>

alt text http://shup.com/Shup/293811/11021055643-My-Desktop.png

css xhtml w3c semantic-markup

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

automake和项目依赖

我有一个项目,我想用automake构建.该项目由不同的组件或模块组成,并且存在模块间依赖关系,这需要以特定顺序构建项目.

例如:

project dir/
  module1 (core C shared lib)
  module2 (C++ shared lib wrapper around module 1)
  module3 (C++ application with dependency on module2)
  module4 (C library with dependency on module1)
  module5 (C application with dependency on module4)
Run Code Online (Sandbox Code Playgroud)

我对automake来说相对较新,但我(几乎)知道如何使用它来成功构建一个项目.

我想有一个'主'项目文件(如果可能的话),它指定项目模块的构建顺序,运行单元测试,如果有的话,整个构建过程都失败:

  • 其中一个模块无法构建
  • 其中一个模块未通过单元测试

我如何编写这样一个"主项目"文件(或调用任何其他机制)来构建具有大量模块间依赖关系的项目?

c c++ automake makefile

10
推荐指数
1
解决办法
3464
查看次数

如何获取有关分配给但不再使用的变量的警告?

以下文件foo.c是我在代码中找到的更微妙的bug的简化版本.

int b;

void bar(int a);

void foo(int a)
{
  bar(a);
  a = 42;
}
Run Code Online (Sandbox Code Playgroud)

这条线a = 42在我的代码中实际上是一个错字:我的意思是b = 42.我不希望编译器检测到我输错了,但是我希望得到一个警告,我将分配给不再使用的局部变量(或函数参数).如果我用这个文件编译

% gcc-4.6 -Wall -Wextra -pedantic -O3 -c foo.c
Run Code Online (Sandbox Code Playgroud)

我完全没有警告.检查生成的代码表明a = 42没有执行赋值,因此gcc非常清楚这条指令是无用的(因此可能是假的).注释调用bar(a);确实会产生警告warning: parameter ‘a’ set but not used [-Wunused-but-set-parameter],所以gcc只要a在函数中的某个地方使用它就好像不会发出警告,即使它赋值之前.

我的问题:

  1. 有没有办法告诉GCC或Clang对此类案件发出警告?(即使有被bar删除的电话,我也无法让clang 3.0发出任何警告.)
  2. 实际行为有原因吗?即,有些情况下,实际上是否需要分配将被优化器丢弃的局部变量?

c gcc clang compiler-warnings

9
推荐指数
1
解决办法
2009
查看次数

pop_back()是否真的使std :: vector上的*all*迭代器无效?

std::vector<int> ints;

// ... fill ints with random values

for(std::vector<int>::iterator it = ints.begin(); it != ints.end(); )
{
    if(*it < 10)
    {
        *it = ints.back();
        ints.pop_back();
        continue;
    }
    it++;
}
Run Code Online (Sandbox Code Playgroud)

此代码无效pop_back(),因为调用时it无效.但是我找不到任何关于迭代器失效的文档std::vector::pop_back().

你有相关的链接吗?

c++ stl

5
推荐指数
3
解决办法
6084
查看次数

有谁知道任何 C# BDD(二元决策图)包?

如何实现二元决策图(BDD)?我想基于文化算法和 BDD 的电路故障检测来实现 BDD 的最小化。

c# algorithm binary-decision-diagram

5
推荐指数
0
解决办法
1348
查看次数

捏合/缩放视口规范适用于iPhone但不适用于Android

我从帆船公司xssailing.com回来制作了一个WordPress网站 ,目前将视口设置为:

<meta name="viewport" content="user-scalable=yes;width=device-width; initial-scale=0.31; maximum-scale=1.0;"/>
Run Code Online (Sandbox Code Playgroud)

该网站在计算机上运行良好,我可以在iPhone/iPad上捏合和缩放.当我用我的点燃访问该网站时,我无法像其他网站那样捏和缩放.有任何想法吗?

谢谢!

html wordpress android viewport

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

如何在automake中声明可选目标?

在我的Makefile.am文件中,我有这样的事情:

bin_PROGRAMS = foo bar

foo_SOURCES = foo.cpp

bar_SOURCES = bar.cpp
Run Code Online (Sandbox Code Playgroud)

我有兴趣bar只在我做的make bar时候编译,而不是在我做的时候make all.但我想要foo总是编译.我怎么做?

谢谢.

automake

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

在使用autotools编译的项目上运行valgrind会输出多个堆摘要

我正在使用automake编译一个项目,但是当尝试在生成的可执行文件上运行valgrind时,它没有按预期运行,在实际执行我要检查的代码之前似乎运行了8次,并且该部分的堆摘要代码根本不显示:

==4601== Memcheck, a memory error detector
==4601== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.                                                                                            
==4601== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info                                                                                          
==4601== Command: ./launcher -g ../data/params.txt                                                                                                                  
==4601==                                                                                                                                                            
==4605==                                                                                                                                                            
==4605== HEAP SUMMARY:                                                                                                                                              
==4605==     in use at exit: 0 bytes in 0 blocks                                                                                                                    
==4605==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated                                                                                                   
==4605==                                                                                                                                                            
==4605== All heap blocks were freed -- no leaks are possible                                                                                                        
==4605==                                                                                                                                                            
==4605== For counts of detected and …
Run Code Online (Sandbox Code Playgroud)

c automake valgrind autotools libtool

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