我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
这是一段代码/usr/src/linux-3.10.10-1-ARCH/include/linux/printk.h:
static inline int printk_get_level(const char *buffer)
{
if (buffer[0] == KERN_SOH_ASCII && buffer[1]) {
switch (buffer[1]) {
case '0' ... '7':
case 'd': /* KERN_DEFAULT */
return buffer[1];
}
}
}
Run Code Online (Sandbox Code Playgroud)
它是一种运营商吗?为什么"C编程语言"没有提到它?
我很困惑,根据以下标准决定使用哪种算法或哪种算法来查找对象:有2个类:'TileSets'和'Tile'.TileSet有2个int属性:firstTileId和lastTileId,而Tile有一个int属性:id,如下所示:
struct TileSet { int firstTileId, lastTileId; }
struct Tile { int id; }
Run Code Online (Sandbox Code Playgroud)
该应用程序应该有不超过10个TileSet(通常为3-5)和10.000+ Tiles.速度对于确定具有给定id的TileSet哪个TileSet属于哪个非常重要.将tileset添加到向量后,第一个和最后一个id属性不会更改,并且它们不会相互重叠,例如:{{1,25},{26,125},{126,781},{ 782,789} ...}.我们可以看到,瓷砖范围内没有任何孔.瓷砖矢量不是订购也不是.我目前的实现(伪短代码的种类)是:
Vector t = 10.000+ tiles
Vector ts = tilesets with a size of a number of a power of 2 number bigger than 6, at least
for tileIndex = 0; tileIndex < t.size; tileIndex++, do:
for tilesetIndex = 0; tilesetIndex < ts.size; tilesetIndex++, do:
if (ts[tilesetIndex].firstTileId >= t[tileIndex].id && t[tileIndex].id <= ts[tilesetIndex].lastTileId)
// tile t[tileIndex] belongs to the tileset ts[tilesetIndex]! Done!
Run Code Online (Sandbox Code Playgroud)
我可以在这种情况下使用什么样的算法?这有什么公式吗?