我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
我在我的代码中发布了一个问题,其唯一的#include指令如下:
#include <bits/stdc++.h>
Run Code Online (Sandbox Code Playgroud)
我的老师告诉我这样做,但在评论部分,我被告知我不应该这样做.
为什么?
c++ portability c++-faq turbo-c++ implementation-defined-behavior
我正在阅读cin中的一些线段.每个线段由起点和终点表示.2D.X和Y.
输入未排序.它是随机顺序的.(更新:但是我需要它们首先按X排序然后按Y排序)
我可以读取所有段,将它们存储在向量中,然后调用std :: sort.另一方面,我可以创建一个空的std :: set,并在它到达时插入每个段.该集将自动维护排序顺序.这两种方法中哪一种更有效?
更新:输入的总大小(段数)是事先已知的.
我有一个数字序列(未排序,没有重复),目标是对它们进行排序。
方法一:插入载体。O(n),使用排序算法和排序。O(nlogn)
方法二:插入集合。o(nlogn)
哪种方法会更快?
我觉得 set 会更快,因为 vector 中的每个插入都必须分配完整的数组元素并复制它然后删除它,这可能很昂贵。但是我通过网络阅读了大部分位置向量都已设置。
谁能建议我用正确的逻辑哪个更快?
编辑:如果我们事先不知道元素的数量,哪一个会更快设置或向量(因为元素的数量都是小而元素的数量不是大的?注意:如果元素的数量不是大的集合是更好的选择似乎但它对小也有好处吗?不知道)
c++ ×4
c++-faq ×2
std ×2
stl ×2
implementation-defined-behavior ×1
namespaces ×1
performance ×1
portability ×1
set ×1
sorting ×1
turbo-c++ ×1