小编peo*_*oro的帖子

什么是异国情调的物体?

我刚刚在ES6中发现了Exotic Objects.我努力了解它们并且无法找到太多简单的信息,因此我有很多疑问:

  1. 我可以创建新的异域对象类型,还是只能存在标准定义的对象类型?
  2. 标准定义的外来物体是哪种?
  3. 我们真的需要各种异国情调的物品,还是它们与旧标准兼容?例如,无法使用预先填充默认参数的普通数组实现Arguments外来对象吗?
  4. 最初,我想象Object.create(proto)只是在异国情调的对象的原型上没有按预期工作(例如Object.create(Array.prototype),并不完全有效),但后来我意识到它也不能像原型那样工作,Set并且Map看起来并不像作为异国情调的物体......这些是与异国情调不同的其他一些特殊物品吗?
  5. 有没有办法确定一个物体是否是异国情调?

我对异国情调的物体很困惑; 对它们的一般概述将不胜感激.

javascript ecmascript-6

8
推荐指数
0
解决办法
834
查看次数

C++:将容器转换为不同但兼容类型的容器

它经常发生在我身上有AA容器C的类型(或任何类型的包装类,甚至是智能指针)T1,并希望这种转换C<T1>成C<T2>,其中T2是兼容的T1.

C++不允许我直接转换整个容器,并且强制a reinterpet_cast会导致未定义的行为,所以我需要创建一个新的C<T2>容器并使用生成的C<T1>项目重新填充它T2.这种操作在时间和空间上都非常昂贵.

而且许多情况下,我敢肯定,强制reinterpret_cast将正常工作与任何编译器编译的代码曾经存在,例如,当T2是T1 const时,或者T1和T2是指针.

是否有转换任何清洁和高效的方式C<T1>在C<T2>?
例如,一个container_cast运算符(/ function?)创建并重新填充C<T2>if和only,如果它不是二进制兼容的C<T1>?

c++ containers casting

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

当我定义函数时,我应该以什么顺序放置参数?

我经常发现很难决定并且不一致.我可以遵循一些规则吗?

例如:

def remove_except(haystack, needle, exclude_value):
    for key in hackstack:
        if key in needle and haystack[key] != exclude_value:
            hackstack.pop(key)
Run Code Online (Sandbox Code Playgroud)

可能很容易:

def remove_except(needle, exclude_value, haystack):
    for key in hackstack:
        if key in needle and haystack[key] != exclude_value:
            hackstack.pop(key)
Run Code Online (Sandbox Code Playgroud)

这不是一个完美的例子,因为我倾向于将变量作为第一个参数进行修改,例如haystack,这甚至可能是一个惯例,但除此之外,我不确定该怎么做.

我对比Python更多的语言感兴趣.

language-agnostic coding-style conventions

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

在OpenLDAP中选择哪种类型的组来对用户进行分组

我需要知道我应该使用哪种组来对LDAP中的用户进行分组.

我基本上需要函数MemberOf,以获得基于组成员身份的一些权限.

例:

  • 用户
    • 用户1
    • 用户2
    • 用户3
  • 组
    • 第1组
    • 第2组

用户1是第1组和第2组的成员.

这些组需要是动态的,如Active Directory.

问题来了,因为我有这些选择:

Samba: Group Mapping

User Group

Generic: Posix Group

对于用户来说也是如此,我应该选择哪一个?

Generic: User Account

Samba: Account

我找不到一个显示差异的好网站,任何链接都将非常感激.

ldap openldap

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

C++:静态分析代码(和/或预处理代码)的工具

通常我可以使用一些工具来静态分析我的代码,以帮助我使其更清洁.像编译器警告的东西,但这些还不够.我时不时地想要写一个(使用clang库或gccxml),但我想这需要太多的工作.

我想到的一些事情是:

  1. 寻找神奇的数字(即:不同于0的硬编码常数).

  2. 检查三个规则是否始终受到尊重(每个类必须定义所有析构函数,复制构造函数和赋值运算符,或者都不定义).


我也梦想(但这些东西都是纯粹的乌托邦)关于预处理器,它解析一些非标准代码并将其转换为有效的C++代码,这个工具能够:

  1. 扩展模板别名,以便我可以在C++中使用它们(好吧,使用C++ 0x不再需要它)

  2. 在文件末尾移动内联函数,这样我就不必遵守declare-before-use规则,并且能够像在Java中一样编写内联类.

  3. 提供扩展语法,如支持自定义运算符(将在函数调用中扩展),或一些特殊语法/关键字,以轻松实现某些模式.


有没有任何工具,能够做这些事情的一部分?

否则你会建议哪些库来实现这些任务(clang libs,gccxml,...),你认为需要做多少工作?

c++ parsing preprocessor

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

模糊的部分模板专业化

我有一个特质课,我需要多次专攻(和部分特化).

一些部分专业化重叠:

template< typename T > struct C { };
template< typename T1, typename T2 > struct TRAIT { };

template< typename T > struct TRAIT< T, T > { };
template< typename T1, typename T2 > struct TRAIT< C<T1>, C<T2> > { };

int main( ) {
    // ERROR! could be both TRAIT<T,T>   [with T = C<int>]
    //                  and TRAIT<T1,T2> [with T1 = T2 = int]
    TRAIT< C<int>, C<int> > foo;
    return 0;
};
Run Code Online (Sandbox Code Playgroud)

我怎么能用工作代码获得相同的结果?

我疯了同enable_if和is_same …

c++ templates ambiguity specialization

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

算法之谜:具有随机访问,插入和移位的序列

描述一个数据结构,其中:

  • 任何项都由数组中的整数值索引
    • 整数可以索引单个值
    • 用于索引项目的整数是连续的:它们从1到n无孔
  • 使项目处于适当位置i(即:与整数相关联的项目i)应尽可能快
    • 随机访问
  • 在位置插入新项目i应该尽可能快
    • 这将任何项目从右移i起
  • 在位置移除物品i也应该尽可能快
    • 这将左转变,从任何项目i+1起

编辑:我忘记的一件小事:项目索引只能在添加/删除一个时移动,它们不能随机交换.

在本说明书中n是结构的大小(即:它包含多少项),当然i是通用整数(1 <= i<= n).


我是从我在教职员工遇到的那个人那里听到的.不知道这是一个面试问题,一个考试问题,只是一个谜语或什么,但我想这可能是一切.

如果我没记错的话(但是,嘿,它是在12月24日之前),他说这样的数据结构既可以通过O(sqrt n)插入/转移和O(1)访问时间实现,也可以O(log n)用于任何操作.


编辑:已经给出了一些正确的答案.如果您不想再考虑这个问题,请阅读它.

language-agnostic algorithm data-structures

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

Koenig查找的基本原理

Koenig查找的基本原理是什么?

无法避免将其视为使您的代码更难以阅读且更不稳定的东西.

他们不能定义Koenig查找,以便它只适用于特定情况(即:非成员运营商)或明确要求时?

c++ rationale argument-dependent-lookup

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

在C++中,为什么"new"需要动态创建一个对象而不仅仅是分配?

我有这个琐碎的类层次结构:

class Base {
public:
    virtual int x( ) const = 0;
};

class Derived : public Base {
    int _x;
public:
    Derived( int x ) : _x(x) { }
    int x( ) const { return _x; }
};
Run Code Online (Sandbox Code Playgroud)

如果我malloc用来分配一个实例Derived,然后尝试访问多态函数x,程序崩溃(我得到一个分段错误):

int main( ) {
    Derived *d;
    d = (Derived*) malloc( sizeof(Derived) );
    *d = Derived( 123 );

    std::cout << d->x() << std::endl; // crash

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当然我的实际应用程序要复杂得多(它是一种内存池).


我很确定这是因为我分配的方式d:我没有使用new.

我知道 …

c++ memory malloc alignment new-operator

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

使用vanilla GCC(或Clang)和Android NDK

Android-NDK附带自己的编译器来构建本机代码.我当前的android-NDK安装附带的版本是arm-linux-androideabi-g++ (GCC) 4.6.x-google 20120106 (prerelease),我猜它是GCC 4.6的一个分支.

它和普通(香草)GCC 4.6有什么区别?它是否为ARM平台生成更好的代码?

我想使用其他编译器为android构建软件,比如vanilla GCC 4.7或Clang,因为他们对C++ 11有更好的支持并实现了我正在努力使用的一些功能(比如模板别名).

  1. 是否可以使用最新的香草GCC或Clang来构建Android的本机代码?我应该使用什么参数?

  2. 使用与android-SDK附带的编译器不同的编译器有什么缺点?

c c++ android build android-ndk

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