小编San*_*fer的帖子

使用std :: <type> vs使用std命名空间

使用using声明的两种方法是

using std::string;
using std::vector;
Run Code Online (Sandbox Code Playgroud)

要么

using namespace std;
Run Code Online (Sandbox Code Playgroud)

哪种方式更好?

=========满意答案下面=============

简而言之,在函数内使用声明是无害的,只要给出本地作用域关注,而全局使用声明是危险的,因为它们可能导致命名空间相交,从而使编译器混乱.

通常我们喜欢使用命名空间中的每个名称而没有限定条件.这可以通过为命名空间中的每个名称提供using声明来实现,但这很繁琐,并且每次在命名空间中添加或删除新名称时都需要额外的工作.或者,我们可以使用using-directive来请求命名空间中的每个名称都可以在我们的范围内访问而无需限定.[...] [...]使用using-directive从一个经常使用的知名库中获取名称,这是一种简化代码的流行技术.这是本书中用于访问标准库设施的技术.[...]在一个函数中,using-directive可以安全地用作符号方便,但是应该注意全局使用指令,因为过度使用可能导致命名空间被引入以避免名称冲突.[...]因此,我们必须谨慎使用全球范围内的使用指令.特别是,除非在非常特殊的情况下(例如,为了帮助转换),不要在头文件中的全局范围中放置using-directive,因为你永远不知道标头可能在哪里#included.

感谢Jonathan Wakely的报价.

c++ using

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

如何知道ncurses的initscr()是否早先被调用过?

更多此刻的好奇心,有没有办法知道initscr()<ncurses.h>之前已经叫什么名字?我相信initscr()两次打电话是一个坏主意.

c++ curses ncurses

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

OCaml lwt utop infix bind运算符>> =缺失

我打电话require "lwt.simple-top" ;;给utop并尝试一个简单的例子,但它无法找到运算符>>=.

在此输入图像描述

ocaml lwt

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

返回C中的2D数组的数组(指针)

函数动态地创建一个int阵列,其元素是预定义的int[2].有没有办法让函数为该数组赋值,然后将其返回给调用者.

以下代码完成此任务但抛出警告: initialization from incompatible pointer type [enabled by default]

#include <stdlib.h>
#include <stdio.h>

int *get_values()
{
    int (*x)[2] = malloc(sizeof(int[2])*3);

    x[0][0] = 1;
    x[0][1] = 2;

    x[1][0] = 11;
    x[1][1] = 12;

    x[2][0] = 21;
    x[2][1] = 22;

    return x;   
}

int main()
{
    int (*x)[2] = get_values();

    int i;
    for (i=0; i!=3; i++)
        printf("x[%d] = { %d, %d }\n", i, x[i][0], x[i][1]);
}
Run Code Online (Sandbox Code Playgroud)

我知道你动态分配两个维度的替代方案,但这是我很好奇的事情.

c arrays

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

标签 统计

c++ ×2

arrays ×1

c ×1

curses ×1

lwt ×1

ncurses ×1

ocaml ×1

using ×1