可以用vector吗
时间: 2023-07-27 17:26:46 浏览: 31
当然可以使用 `vector` 来创建二维数组,使用 `vector` 可以更方便地管理内存,避免了手动释放内存的麻烦。下面是一个示例代码,创建一个大小为10000x10000的二维数组:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int rows = 10000;
int cols = 10000;
// 创建二维数组
vector<vector<int>> arr(rows, vector<int>(cols));
// 使用数组
arr[0][0] = 1;
arr[9999][9999] = 2;
return 0;
}
```
在上面的代码中,我们使用了 `vector` 来表示二维数组。首先,我们使用 `vector<int>(cols)` 来创建一行的 `vector<int>`,然后使用 `vector<vector<int>> arr(rows, vector<int>(cols))` 来创建整个二维数组。在使用数组时,可以像普通数组一样使用 `arr[i][j]` 来访问数组元素。不需要手动释放内存,当 `vector` 离开作用域时,会自动释放内存。
相关问题
可以用vector实现栈吗
是的,可以使用vector实现栈。vector是动态数组,可以实现插入、删除和访问元素的常数时间复杂度。
以下是一个基于vector实现的简单栈示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
template<typename T>
class Stack {
private:
vector<T> data;
public:
void push(T val) {
data.push_back(val);
}
void pop() {
if (!data.empty()) {
data.pop_back();
}
}
T top() {
if (!data.empty()) {
return data.back();
}
throw "stack is empty";
}
bool empty() {
return data.empty();
}
};
int main() {
Stack<int> s;
s.push(1);
s.push(2);
s.push(3);
while (!s.empty()) {
cout << s.top() << " ";
s.pop();
}
cout << endl;
return 0;
}
```
在这个示例中,我们使用vector实现了一个基本的栈数据结构。push()方法将元素添加到vector的尾部,pop()方法从vector的尾部删除元素,top()方法返回vector的尾部元素,empty()方法用于检查vector是否为空。
C++ vector里可以套vector吗
是的,C++中的vector可以套vector。也就是说,你可以创建一个二维数组或矩阵,其中每个元素都是一个vector。例如:
```c++
#include <vector>
int main() {
std::vector<std::vector<int>> matrix;
matrix.resize(3); // 3行
for (int i = 0; i < 3; i++) {
matrix[i].resize(4); // 4列
}
matrix[0][0] = 1;
matrix[0][1] = 2;
// ...
matrix[2][2] = 9;
matrix[2][3] = 10;
return 0;
}
```
在这个例子中,我们创建了一个3行4列的矩阵,其中每个元素都是int类型的vector。我们可以像访问普通数组一样访问矩阵中的元素,并且可以使用vector的所有方法来操作这些元素。