我之前就已经写过关于向量的文章,有兴趣的朋友可以点搜索按钮搜一下vector,在这里我放一段程序来演示向量的用法。
#include <iostream> #include <vector> using namespace std; int main() { // 定义一个初始长度为10的向量A, 可用位置数为10. vector<int> A(10); // 下标i从0到A.size() - 1对A中每个元素赋值i. // 为简便起见这里使用size_t型, 实际上i应该用vector<int>::size_type型. // 向量的下标用法与数组相同, 但要注意应保证向量中实有元素个数就是size(). for (size_t i = 0; i < A.size(); ++i) A[i] = static_cast<int>(i); // 使用迭代器iter对向量A中每个元素赋值1. // 迭代器可从向量的开始到结束, 类似指针. // 要注意begin()和end()的用法: begin()位置是首元素, 而end()位置没有元素存在. // iter为vector<int>::iterator型, 可用auto关键字配合赋值语句自动获取其类型. for (auto iter = A.begin(); iter != A.end(); ++iter) *iter = 1; // 定义一个长度为5的向量B, 初始元素全为3. vector<int> B(5, 3); // 在向量B末尾加入100个2. B.resize(B.size() + 100, 2); // 在向量B的尾部加入4. B.push_back(4); // 迭代器的另一种用法 auto iter = B.begin(); for (size_t i = 0; i < B.size(); ++i) *(iter + i) *= 2; //类似B[i] = B[i]*2 // 若向量B不为空, 则持续输出其尾部元素并删除之. while(!B.empty()) { cout << B.back() << endl; // 输出向量B的末尾元素 B.pop_back(); // 删除向量B的末尾元素 } // 接收未知长度的自然数输入序列, 以负数作为输入终止. C初始为空向量. vector<int> C; int data; // 基于push_back操作的速度非常快. for (cin >> data; data >= 0; cin >> data) C.push_back(data); for (const auto& x : C) cout << x << endl; // 向量的初始化列表. vector<int> D = {4, 2, 1, 5, 3}; return 0; }
Comments NOTHING