小编pau*_*l23的帖子

cout的宽度 - 显示

我想知道:是否可以在标准输出中获得一条线的宽度?没有std::cout.width()std::setw()宽度,但操作系统之前字符的实际最大数量将换行?

编辑:只是为了通知,我目前正在使用Windows XP,虽然我真的更喜欢便携式方式来做这个(其他一切都是便携式的).

c++ cout command-prompt

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

Sheetjs `!rows` (和 `!cols`)属性在新创建的工作表上不存在?

下面是sheetjs 的代码片段:

const XLSX = require('xlsx');
const workbook = XLSX.utils.book_new();
const ws = XLSX.utils.aoa_to_sheet([[1, 2, 3], [4,5,6]]);
XLSX.utils.book_append_sheet(workbook, ws, page);
Run Code Online (Sandbox Code Playgroud)

每当我尝试访问一行时:const rows = ws['!rows'];

它返回undefined。检查ws表明它也不具有该属性。我将如何访问行属性(并设置例如第一行的样式)。

javascript sheetjs

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

语句完全被忽略(好像:编译器省略了?)

好吧,我再一次打砖了.再一次,我没有看到它是错误的原因,不知道如何让它工作:

我有一个类Human的实例.Human类派生自Object .. Object类有一个名为"PerformStep"的vitrual函数.在人类类重载这个函数. 人类也有"WalkAction"功能.现在我想在PerformStep - By成员函数指针期间调用这个"walkaction".
我喜欢用指针做这个:
人类是愚蠢的:他们知道如何走路,但不知道何时走路.所以在这一步中会问一个神实例:"我现在该怎么做" - 然后那个神实例返回指向正确成员函数的指针.

virtual void PerformStep() 
{
    postion.x += 0; //redundant line to check for the debugger
    CALL_MEMBER_FN(*this,&Human::WalkAction);
    Object::PerformStep();
}
Run Code Online (Sandbox Code Playgroud)

人力:: WalkAction:

void WalkAction(){
    position.x += 1;
}
Run Code Online (Sandbox Code Playgroud)

CALL_MEMBER_FN(宏):
CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember))

问题是当我在调试模式下运行程序时,它完全忽略了带有函数指针的行. - 如果我按语句运行它会"跳过"该行,如果我在walk动作中放置断点它永远不会到达断点.如果我在特定行上放置一个断点,断点就会被推到下一个断点线.

这里发生了什么?

c++ member-function-pointers

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

通过基指针获取派生类?

我可以在前一段时间宣誓这个工作,当我的对象在堆上而不是在堆栈上声明时.我有一个函数,它接受一个指向基类的指针(detail :: DuplicateFn). - 虽然因为这是一个虚拟类,实际的指针是由派生类给出的(即dteail :: SkipFn)

1>GMProject.cpp(298): error C2664:
'void xml_tree<V>::combine_if<bool(__cdecl *)(const T &,const T &)>(const xml_tree<V> &,Predicate,const detail::DuplicateFn *)' :
cannot convert parameter 3 from 'detail::SkipFn (__cdecl *)(void)' to 'const detail::DuplicateFn *'
Run Code Online (Sandbox Code Playgroud)

我的功能:

void GMProject::CombineTree(const pTree& Other) {
    detail::SkipFn foo();
        ProjectTree.combine_if(Other, &SimilarTreeValue<GMProject::pTree>, &foo);
}
Run Code Online (Sandbox Code Playgroud)

ProjectTree.combine_if()作为第三个参数需要指向"DuplicateFn"的指针 - 而SkipFn是从DuplicateFn派生的.

如上所述,如果我在堆上声明"foo",它会正常工作(就像我期望的那样).然而,当在堆栈上声明foo时(或者-ultimatelly-使foo成为临时)它不会.这是为什么?

c++ polymorphism derived-class

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

overload std :: find for custom classes

那么std::find对象中的自定义类重载是否可能/"好" ?然后不重载相等运算符.说一个容器存储(智能)指向它的实际数据,我真的对数据布局或存储模式不感兴趣,我只是想找到一个特定的数据成员....

这是合法的,"道德的"吗?如果说我有std::vector<std::shared_ptr<myClass> >- 或"甚至"用户定义的容器?或者我应该总是依赖std::find_if这些案件?

c++ overloading find stl-algorithm

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

如何使用字符串列表[可能包含任何字符]作为键?

基本上我"理解"使用其他容器作为键的歧义. - 您是比较参考还是比较其中的值(以及深度).

那你不能专门化一个列表并制作一个自定义比较/哈希运算符吗?正如我在我的应用程序中所知,我希望通过字符串的值(以及当然的相对顺序)来比较字符串列表.

那么我该如何为这些列表编写自定义哈希呢?或者换句话说 - 如何在不导致引入分隔符的情况下对字符串进行字符串化(分隔符可能是字符串的一部分)?

关于这个问题:https://wiki.python.org/moin/DictionaryKeys
在那里直接说不能使用列表;

也就是说,为什么列表不能用作字典键的简单答案是列表不提供有效的哈希方法.当然,显而易见的问题是,"为什么不呢?"

所以我写这个问题,如果有办法让列表可以清除; 以及如何制作一个令人满意的Hash方法.


作为我想要这个的原因的一个例子,请参阅下面的代码:

namelist = sorted(["Jan", "Frank", "Kim"])
commonTrait = newTraits()
traitdict = {}
traitdict[namelist] = commonTrait;

//later I wish to retrieve it:
trait = traitdict[sorted(["Jan", "Frank", "Kim"])]
Run Code Online (Sandbox Code Playgroud)

在这个直接使用中,我想到"列表的排序"并不重要(排序只是在上面的代码中完成,以使列表总是相等,如果它们保持相同的内容).

python dictionary list stringification

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