小编Pav*_*liy的帖子

Javascript 地图排序

我最近在代码中遇到了一个错误,这是由于我在 MDN 上查看 Map 对象详细信息时缺少“按插入顺序”文本。简而言之,我有一个地图对象,可以说

let myMap = new Map;
Run Code Online (Sandbox Code Playgroud)

然后,在填充它之后,我用一个简单的for .. of语句迭代它的内容。像这样

for (let [key, val] of myMap) { 
    ...
}
Run Code Online (Sandbox Code Playgroud)

for循环中的代码依赖于 (key, value) 对按key排序。然而,填充地图的算法是以随机顺序执行的(我无法更改它)。为了解决这个问题,我现在首先将所有可能的键添加到地图对象中,如下所示:

let myMap = new Map;
for (let i=0; i<maxkey; ++i) myMap.set(key(i), undefined);

// And in the for loop
for (let [key, val] of myMap) {
    if (typeof val === "undefined") continue;
    //...
}
Run Code Online (Sandbox Code Playgroud)

幸运的是,它们的数量并不多(因此性能损失可以忽略不计),而且这是有效的。不过这个解决方案对我来说看起来有点尴尬。

还有更好的吗?

javascript es6-map

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

此代码标准是否符合要求?

所以代码是

class A
{
public:
   int i;
   A(){
       i = 5;
   }
};
class B : public A
{
public:
   void someFunc();
};

class C
{
   A myObj;
public:
   void func(){
       B* foo = reinterpret_cast<B*>(&myObj);
       foo->someFunc();
   }
};
Run Code Online (Sandbox Code Playgroud)

假设类将保持原样并且永远不会改变,那么reinterpret_cast的使用是否正确(我认为它不是)?如果没有,这里违反了C++标准的哪些部分(你可以使用任何版本)?

c++ language-lawyer c++11 c++98 c++14

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

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

c++98 ×1

es6-map ×1

javascript ×1

language-lawyer ×1