1
7
不要公开从STL容器派生。它们有非虚拟析构函数,如果有人通过指向base的指针删除您的一个对象,它将调用未定义的行为。如果必须从向量中导出,请私下进行,并暴露需要暴露的部分
这里,我就用一个
|
2
4
是的,迭代器很难看,迭代器循环的可读性不是很好,typedef只能掩盖混乱。但至少,它们是可伸缩的,它们是标准解。 我的解决方案?每个宏的stl。这不是没有问题的(主要是一个宏观的,恶心),但它理解了它的含义。它不如例如。 this one ,但这项工作。 |
3
3
|
4
3
我做了这个社区维基。。。请编辑它。我不再同意反对“int”的建议。我现在觉得还不错。
向后的您可以这样做,这是完美定义的行为:
很快,用C++ 1x(下一个C++版本)很好地实现,你可以这样做:
递减到0以下将导致i换行,因为它是无符号的。
这永远不应该成为一个错误的理由(使用
为什么不使用上面的std::size\u t?
|
5
3
跳过索引最简单的方法是使用迭代器、基于范围的for循环或算法来回避问题:
使用适当的无符号类型另一种方法是使用容器的大小类型。
使用签名类型(小心!)
style guide practically demands one
),像
现在你可以写:
或以传统方式反向循环:
这个
|
6
0
使用size\u t变量是更好的选择,但若你们不相信你们的程序员能正确地使用unsigned,那个么就用cast来处理它的丑陋。找个实习生把它们全部换掉,之后就不用担心了。将警告作为错误打开,不会有新的警告出现。你的循环现在可能“丑陋”,但你可以理解这是你的宗教立场对有符号和无符号的结果。 |
7
0
|
Community wiki · 如何确定变量是有符号还是无符号? 1 年前 |
OregonTrail · 安全地将int转换为C中的字符串 10 年前 |
Lautaro · SSE比较压缩的无符号字节 11 年前 |
Zapnologica · Java和无符号字节[重复] 11 年前 |