对比代码:
#include <iostream> #include <vector> #include <array> #include <ctime> const int count = 6000; using std::vector; using std::array; int _tmain(int argc, _TCHAR* argv[]) { vector<int> v(count); array<int, count> a; time_t start,stop; start = clock(); for (int j = 0; j < count; ++j) { for (int i = 0; i < count; ++i) { v[i] = i; //v.push_back(i); } } stop = clock(); printf("Vector Use Time:%ld\n",(stop-start)); start = clock(); for (int j = 0; j < count; ++j) { for (int i = 0; i < count; ++i) { a[i] = i; //a.at(i) = i; } } stop = clock(); printf("Array Use Time:%ld\n",(stop-start)); std::system("pause"); return 0; }
效果:
a[i] = i;与a.at(i) = i;效率一样。
v[i] = i; 比v.push_back(i);的时间少;
相关推荐
学习`vector`容器时,还需要理解其与其他STL容器如`deque`、`list`和`array`的区别,以便在不同的场景下选择最合适的容器。例如,`deque`在两端插入和删除更高效,`list`则适合频繁的插入和删除,而`array`是固定...
七、`vector`与其他容器的比较 - `array`:静态大小,不能动态调整,但没有内存开销。 - `deque`:提供类似`vector`的功能,但在两端插入和删除更快,但内存分布不连续。 - `list`和`forward_list`:使用链接节点...
本文将详细介绍几种常见的顺序容器,包括`vector`、`string`、`list`、`forward_list`、`deque`以及`array`,并且探讨这些容器的初始化、赋值、大小调整、元素添加与删除等基本操作。 #### 二、顺序容器详解 ##### ...
这与动态数组如`std::vector`不同,后者可以在运行时动态调整大小。 2. **类型安全**:`array`是一个模板类,可以用于任何类型的元素,它确保了正确类型的元素只能被存入和取出。 3. **连续内存**:`array`中的元素...
std::array的构造函数、析构函数和赋值操作符都是编译器隐式声明的……这让很多用惯了std::vector这类容器的程序员不习惯,觉得std::array不好用。 但实际上,std::array的威力很可能被低估了。在
容器类是C++标准库中的一个关键组成部分,如std::vector、std::array和std::list等,它们提供了不同的数据组织方式和操作接口。在这里,我们尝试模仿std::vector的行为,创建一个动态大小的Array类,它能够像数组...
在C++编程语言中,`std::vector`是标准模板库(STL)中的一种容器,它提供了动态数组的功能。`vector`是一个可以容纳任意类型的对象的容器,它能够自动管理内存,允许我们在运行时改变其大小。这个容器的灵活性使得它...
对于`array`容器,它不支持复制或赋值操作,但可以通过直接初始化的方式来创建新的`array`。例如: ```cpp std::array, 10> digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; std::array, 10> copy = digits; // 直接复制...
数组与C++标准库类模板vector 本章节主要介绍数组和C++标准库类模板vector。数组是数据结构中的重要课题,数组数据结构由相同类型的多个数据项组成。矩阵是数组的延伸。了解数组数据结构、数组的声明、初始化、引用...
顺序容器按照元素在内存中的排列顺序来访问和操作这些元素,包括vector、deque、list、forward_list以及array和string。这些容器各自有不同的特点和性能表现。 **vector** 是一个可变大小的数组,支持快速的随机...
本文将详细探讨STL中的两种主要容器:array和vector。 **1. STL容器:array** `std::array`是一个固定大小的顺序容器,它存储了一组严格线性排列的元素。由于其大小在创建后不可更改,因此适合用于需要高效访问但...
在软件开发中,动态内存管理是一项重要的技能...在实际开发中,应遵循最佳实践,如使用智能指针(在C++11及更高版本)来自动管理内存,或者使用容器类如`std::vector`和`std::array`,它们能更好地处理内存分配和释放。
// 使用C++11的std::array容器,更加安全和类型安全 ``` 此外,VC++还支持C++标准模板库(STL)中的`vector`,它可以动态调整大小,并且提供了一种更高级的初始化方法: ```cpp std::vector<int> vec = {1, 2, 3,...
与传统动态数组或容器(如`vector`)不同,`array`的长度必须在编译时确定,并且不可变。这意味着一旦创建了一个`array`对象,其大小就无法更改。 ##### 特性 1. **固定大小**:`array`的大小在创建时由模板参数...
在本资源"CPP-array.rar"中,我们将深入探讨C++中的动态数组,以及如何使用指针数组来实现动态内存分配,以达到灵活管理内存的目的。 动态数组与静态数组的主要区别在于,静态数组在编译时其大小就已经确定,而动态...
STL,全称为Standard Template Library(标准模板库),是C++编程语言中的一部分,它提供了一组高效且灵活的容器、迭代器、算法和函数对象,极大地提升了C++程序员的工作效率。在“STL详细终稿431”中,我们可以看到...
4. **轻量级**:`boost::array`不涉及动态内存分配,因此它的构造和复制开销比`std::vector`等动态容器小很多。这对于性能敏感的代码尤其有用。 5. **常量时间操作**:插入、删除和访问元素的时间复杂度都是O(1),...
- `vector`支持下标(`[]`)、赋值(`=`)、比较(`==`, `!=`)、迭代器相加(`+`, `+=`)等操作。 9. **性能考虑** - 在`vector`中间插入或删除元素可能导致元素的移动,这可能影响效率。 - 在需要高效随机访问但不需要...
顺序容器包括array、vector、deque、forward_list、list,它们按照元素插入的顺序存储和访问元素。关联容器如set、multiset、map和multimap则维护了元素间的某种排序关系。无序关联容器unordered_set、unordered_...
1. **数组(Array)**:虽然C++标准库中没有直接提供数组容器,但C++11引入了`std::array`,它是固定大小的数组,提供了安全的访问和操作。 2. **向量(Vector)**:`std::vector`是一个动态数组,可以自动调整大小...