小编use*_*914的帖子

console.log(array)显示与迭代数组和显示单个元素不同的数组内容

我有以下代码:

console.log("start");
for(var i = 0; i < array.length; i++){
    console.log(i + " = " + array[i]);
}
console.log(array);
console.log("end");
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

[16:34:41.171] start
[16:34:41.171] 0 = 0
[16:34:41.172] 1 = 168
[16:34:41.172] 2 = 171
[16:34:41.172] [0, 168, 171, 139]
[16:34:41.172] end
Run Code Online (Sandbox Code Playgroud)

也就是说,它在迭代数组时不显示139元素,但是console.log在输出整个数组时会打印它.为什么?(< - 问题)

我稍后修改了数组,是不是以某种方式延迟了console.log,直到我更改了数组?注意,改变语句的顺序,consoel.log(array)直接放在开头不会改变结果(仍然是不同的输出).

我使用的是Firefox 20.0

javascript firefox

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

带有参数的模板化函数,它是一个模板化的类

我意识到有很多类似的问题,但我找不到任何可以解决我的问题(读:我没有真正理解答案,所以我可以将它应用到我的案例中)

我有以下功能:

void printVariable(map<string, bool*>::iterator it)
{
   cout << it->first << " " << *(it->second) << endl;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我有,map<string, bool*> mapping我可以做以下事情:printVariable(mapping.begin());

这工作,现在我也有一个,map<string, int*>并希望能够做同样的事情,所以我想我改变了printVariable函数:

template <typename T>
void printVariable(map<string, T*>::iterator it)
{
   cout << it->first << " " << *(it->second) << endl;
}
Run Code Online (Sandbox Code Playgroud)

但是这会产生编译错误(gcc):

error: variable or field 'printVariable' declared void
error: expected ')' before 'it'
Run Code Online (Sandbox Code Playgroud)

我想我可以通过重载函数来解决这个问题.但我想知道为什么以上不起作用.

Edit2:删除文本声称正确的解决方案是错误的

c++ templates

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

标签 统计

c++ ×1

firefox ×1

javascript ×1

templates ×1