向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
What is the difference between the time complexities of vector <int> a {N, 0} and int arr a[N] = {0}
当使用固定变量初始化vector <int> a {N, 0}
和int arr a[N] = {0}
时,它们的时间复杂性之间有什么区别?
如果两者相同,那么在初始化数组时,我们可以使用什么技术来降低程序的时间复杂性?
向量数据在堆上分配,数组在堆栈上分配。除此之外,希望您的编译器将两者都优化为单个memset(0)
。
要知道确切的时间,您需要在编译器上自己进行基准测试。我怀疑这将花费大量的时间,不过,你的程序的其余部分可能会更慢。
先写你的程序,看看它是否足够快。如果不是,那么对它进行分析,并集中精力处理慢的部分。在你还不知道是否需要之前就进行这样的小优化通常是徒劳的。
Vector在堆中分配内存,因此为Vector分配内存的成本很低,因为堆数据结构需要在堆中搜索可用的内存块。在数组的情况下,内存是在堆栈中分配的,这相当于减少了堆栈指针。然而,向量和数组初始化几乎需要相同的时间,因为两者都使用memset
,然后映射到stos硬件指令。主要区别在于分配内存。当我开发一个高性能软件时,我确实发现分配和初始化向量需要花费大量时间(取决于大小(。
向量和数组初始化的时间复杂度相同。矢量分配比矢量昂贵得多。
相关文章:
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 函数的时间复杂度是多少?
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 如何计算此排序函数的时间复杂度?
- 计算两个代码块的时间复杂度
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- 具有嵌套 if-else 的循环的时间复杂度
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 如何计算函数的时间复杂度?
- 求解包含"variables"的 T(n) 时间复杂度
- 查找数字是否为 2 的幂的时间复杂度
- C++ - 最坏情况和平均情况插入时间复杂度在 std::unordered_map <int,int>?
- 为什么一种算法在相同的时间复杂度下比另一种算法更快?
- 关于记忆后这种递归关系的时间复杂度
- 2 个嵌套循环的时间复杂度
- 给定C++代码的时间复杂度是多少?
- 降低程序的时间复杂度