问题列表 - 第33940页

boost :: variant的访客模板

我想用一个boost.variant<T0,T1,T2>作为参数传递到模板"访问者"类,它会为游客提供运营商所要求的boost.variant游客机制,在这种情况下,所有返回void即

void operator()(T0 value);
void operator()(T1 value);
void operator()(T2 value);
Run Code Online (Sandbox Code Playgroud)

该模板还将为变体中的每个类型T0 ...具有相应的虚函数,该函数默认不执行任何操作.用户可以从模板类继承并仅重新定义他感兴趣的虚拟函数.这类似于众所周知的"模板方法"模式.我能够想出的唯一解决方案是将boost :: variant和关联的访问者包装在一个模板中,并通过typedef访问它们.这没关系,但感觉有点笨重.这是代码:

#include "boost/variant.hpp"

//create specializations of VariantWrapper for different numbers of variants - 
//just show a template for a variant with three types here. 
//variadic template parameter list would be even better! 

template<typename T0, typename T1, typename T2>
struct VariantWrapper
{
    //the type for the variant
    typedef boost::variant<T0,T1,T2> VariantType;

    //The visitor class for this variant
    struct Visitor : public boost::static_visitor<>
    {
        void operator()(T0 value)
        { …
Run Code Online (Sandbox Code Playgroud)

c++ templates boost variant boost-variant

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

如何计算一组字符串的最短唯一前缀?

这是命令行解析中非常常见的算法.给定一组预定义的长选项名称 - 计算唯一标识其中一个选项的最短前缀.例如,对于以下选项:

-help
-hostname
-portnumber
-name
-polymorphic
Run Code Online (Sandbox Code Playgroud)

这将是输出:

-he
-ho
-por
-n
-pol
Run Code Online (Sandbox Code Playgroud)

我正在考虑两种可能的方法 - 作为一棵树:

               *
             / | \
            /  |  \
           H   N   P
          / \      |
         E   O     O
                  / \
                 R   L
Run Code Online (Sandbox Code Playgroud)

或者通过搜索子串:

for (String s : strings) {
   for (int i = 1; i < s.length(); s++) {
      if (search(strings,s.substring(0,i)) == 1) {
          result.add(s.substring(0,i);
          break;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

所以,问题是:

  1. 你会选哪个?
  2. 我错过了明显的第三种方式吗?

java string algorithm

7
推荐指数
1
解决办法
3281
查看次数

使fgets在linux上发出更长的read()调用

我正在阅读相当大的行(最多128K)文本fgets.我在服务器上看到过多的上下文切换,使用strace我看到以下内容:

read(3, "9005 10218 00840023102015 201008"..., 4096) = 4096
Run Code Online (Sandbox Code Playgroud)

即一次fgets读取4096字节的块.有什么方法可以控制fgets调用时块的大小read()

c linux stdio

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

$ _GET和isset()

if isset($_GET['whatever'])...在我的if语句的其余部分之前,我正在接受考试.E_NOTICE错误是方便关闭和$_POST变量的方法我在我的init脚本中有一个解决方案 ..

$POST = (is_array( $_POST ) && count( $_POST ) > 0);
Run Code Online (Sandbox Code Playgroud)

我发现这有助于自我发布脚本看起来干净.

if ($POST) {
    // now do something with $_POST...
}
Run Code Online (Sandbox Code Playgroud)

如果您不知道密钥是什么,我不确定如何动态执行此操作?任何人都可以帮助找到类似的$_GET变量解决方案?

编辑:

if ($_GET['whatever'] == "whatever");如果没有设置且没有E_NOTICE错误,我只想返回false .

编辑:

很抱歉,如果我不清楚我在寻找一个解决方案$_GET$_POST-我只是我使用$_POST作为我希望达到什么样的一个例子.

php superglobals

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

不能将序列乘以'float'类型的非int

级别:初学者

为什么我得到错误"不能将序列乘以'int'类型的非int"?

def nestEgVariable(salary, save, growthRates):
    SavingsRecord = []
    fund = 0
    depositPerYear = salary * save * 0.01
    for i in growthRates:  
        fund = fund * (1 + 0.01 * growthRates) + depositPerYear
        SavingsRecord += [fund,]
    return SavingsRecord 


print nestEgVariable(10000,10,[3,4,5,0,3])
Run Code Online (Sandbox Code Playgroud)

谢谢巴巴

python floating-point sequence

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

循环通过JSON数组 - 正确格式化

我有一个结果集,当我在php中使用json_encode()时,返回以下内容

[
{"id":"1","name:","value"},
{"id":"2","name:","value"},
{"id":"3","name:","value"},
{"id":"4","name:","value"}
]
Run Code Online (Sandbox Code Playgroud)

我然后使用jQuery尝试循环这个:

$.each(data, function(index, itemData){
  alert(itemData.id);
}
Run Code Online (Sandbox Code Playgroud)

问题是它只获得第一条记录(id:1).

难道我做错了什么?

javascript jquery json

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

Java Concurrent HashMap

我想将ConcurrentHashMap转换为TreeMap.我能这样做吗?

java

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

虚拟基础成员没有看到覆盖?

我一直认为base.Something相当于((Parent)this).Something,但显然事实并非如此.我认为重写方法消除了调用原始虚方法的可能性.

为什么第三个输出不同?

void Main() {
    Child child = new Child();

    child.Method();             //output "Child here!"
    ((Parent)child).Method();   //output "Child here!"
    child.BaseMethod();         //output "Parent here!"
}

class Parent {
    public virtual void Method() { 
        Console.WriteLine("Parent here!"); 
    }
}

class Child : Parent {
    public override void Method() { 
        Console.WriteLine ("Child here!"); 
    }
    public void BaseMethod() { 
        base.Method(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

c# inheritance

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

如何在网页上使用Unicode符号?

我正在制作的网页上使用一些 Unicode 符号。出于本示例的目的,假设是这个人:\'\xe2\x98\xba\'。

\n\n

据我了解,在 CSS 的正确实现下,您可以设置您想要的任何字体,如果遇到该字体中不存在的字符,它将开始通过字体系列备份选择回退,直到找到一个有效的。

\n\n

鉴于此,我在 css 中设置了如下字体系列:

\n\n
font-family: Tahoma, Helvetica, "Arial Unicode MS", sans-serif\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的理由是 Tahoma 与 Windows 捆绑在一起。然而,我在网上发现只有某些版本的 Windows 捆绑的 Tahoma 有 Unicode 支持。Helvetica 是一种类似于 Mac 上的 Tahoma 字体。“Arial Unicode MS”与 Office 2000 及更高版本捆绑在一起,并且绝对支持 Unicode。San-serif 是所有情况下的后备,也应该支持 Unicode。

\n\n

在大多数情况下,这效果很好。然而,正如往常一样,Internet Explorer 似乎正在破坏我精心设计的计划。我无法弄清楚该模式是什么,因为我在一台运行 Vista 和 IE8 的计算机上看到它,另一台计算机运行 Windows XP 和 IE7,但它在我的带有 IE8/IE7 测试器的 Win7 开发计算机上运行良好/IE6 测试仪。我在一些不起眼的网页上发现了这样的说法:在旧版本的 IE 上,它只会查找它拥有的第一个字体,然后将其用于所有内容,即使该字体缺少给定的符号,但这并不\'不解释为什么它会发生在 Vista/IE8 上。因此,我可爱的 ​​Unicode 符号对某些(但不是所有)IE 用户来说显示为方框。

\n\n

在网络上处理 Unicode 符号的推荐方法是什么?它们是否不适用于需要广泛的浏览器兼容性的项目?我是否应该添加专门处理旧版 IE 的代码?还有其他我应该担心的问题情况或平台吗?

\n\n

编辑:使用有关失败的系统的新信息进行了更新。

\n

unicode cross-browser

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

面试问题 - 查找数字

我刚刚在SE职位面试中得到了这个问题,除了暴力之外,我不太清楚如何回答这个问题:

给定自然数N,找到两个数字A和P,这样:

N = A +(A + 1)+(A + 2)+ ... +(A + P-1)

P应该是最大可能的.

例如:对于N = 14,A = 2且P = 4

N = 2 +(2 + 1)+(2 + 2)+(4 + 2-1)N = 2 + 3 + 4 + 5

有任何想法吗?

algorithm

12
推荐指数
1
解决办法
1945
查看次数