相关疑难解决方法(0)

为什么"使用命名空间std"被认为是不好的做法?

我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::coutstd::cin直接代替.

为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?

c++ namespaces using-directives std c++-faq

2486
推荐指数
36
解决办法
78万
查看次数

C代码中的switch-case中的"..."是什么

这是一段代码/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编程语言"没有提到它?

c gcc gcc-extensions

49
推荐指数
4
解决办法
3268
查看次数

查找给定数字所属的数字(范围)集,而不使用循环

我很困惑,根据以下标准决定使用哪种算法或哪种算法来查找对象:有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)

我可以在这种情况下使用什么样的算法?这有什么公式吗?

c++ algorithm hash

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

标签 统计

c++ ×2

algorithm ×1

c ×1

c++-faq ×1

gcc ×1

gcc-extensions ×1

hash ×1

namespaces ×1

std ×1

using-directives ×1