vector是动态数组,其元素可以是任意类型,比如下面是一个简单的例子:
#include <iostream> #include <windows.h> #include <vector> using namespace std; int main() { vector< vector<int> > ivec; for (int i = 0; i < 10; i++) { vector<int> vec; for (int j = 0; j < 10; j++) { vec.push_back(i + j); } ivec.push_back(vec); } // 在第一行末尾添加一个元素 ivec[0].push_back(999); // 将第二行末尾的两个元素删除 ivec.at(1).pop_back(); ivec.at(1).pop_back(); // 直接访问 for (int i = 0; i < ivec.size(); i++) { for (int j = 0; j < ivec[i].size(); j++) { cout << ivec[i][j] << " "; } cout << endl; } cout << endl; // 在第一行的下标2处添加一个元素666 ivec[0].insert(ivec[0].begin() + 2, 666); // 在第六行的下标1处删除一个元素 ivec[5].erase(ivec[5].begin() + 1); // 删除最后一行 ivec[9].clear(); // 使用指针访问 vector< vector<int> >::iterator IE; vector<int>::iterator it; for (IE = ivec.begin(); IE != ivec.end(); IE++) { for (it = (*IE).begin(); it != (*IE).end(); it++) { cout << *it << " "; } cout << endl; } cout << endl; cout << ivec[0][10] << endl; // 999 cout << ivec[0].at(10) << endl; // 999 cout << ivec.at(0).at(10) << endl; // 999 // 注意这里front/back和begin/end的区别, cout << ivec[0].front() << endl; // 即front返回的时第一行的第一个元素;而begin是迭代器,需要用*访问到元素 cout << ivec[0].back() << endl; // 同样,back返回的时第一行的最后一个元素;而back是迭代器,需要用*访问到元素 cout << ivec[0][1000] << endl; //1398145138 越界!但是c++不会报错,就像过马路一样,不该过时,没人提醒你不该过,出了错自己扛。 system("pause"); }
最终结果如下:
0 1 2 3 4 5 6 7 8 9 999 1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 0 1 666 2 3 4 5 6 7 8 9 999 1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 9 9 0 999 1398145138
即我们需要引入库文件 vector。 然后这里创建的是一个二维int型数组,对于元素,我们可以用[]访问,也可以用at()访问,但是前者在越界时不会提示。另外,vector支持迭代器,用起来会比较方便。vector与传统数组的区别在于vector不需要指定数组的打下,而是动态变化的。 另外,我们可以看到,可以使用push_back()和pop_back()方便的操作数组;使用insert()和erase()可以很容易地在任何位置添加或者删除数组; 使用begin()和end()可以获取到vector的迭代器;使用size()可以获得vector的大小。 更多详细内容可以看程序注释。