c++ vector

来源:互联网 发布:avena 36一盒粉末淘宝 编辑:程序博客网 时间:2024/06/11 13:52

笔试题中vector 是很常用的存储器,而有些函数的细节总是一知半解。

back() 与end() 的区别

back():返回当前vector最后一个元素的引用
end():返回一个这项当前vector最后一个元素的下一个位置的迭代器。尾地址,不指向任何存储的元素,是标志vector的结束。

补充:

begin() 指向vector起始位置迭代器;
rbegin() 指向末尾的下一位置,其存储的元素是末尾元素的值;
x = *(m.rbegin()+1); 则是倒数第二个元素的值;
rend() 当前vector 起始位置的逆迭代器;
x = *(m.rend()-1); 的值是 第一个元素;
x = *(m.rend()-2); 的值是 第二个元素;

#include <iostream>#include <vector>using namespace std;int main() {    vector<int> m = { 1,2,3,4 };    int x;    x = m.back();    cout << x  << endl;  //x=4    x = *(m.end()-1);    cout << x  << endl;  //x=4    x = *(m.begin());        cout << x << endl;   //x=1    x = *(m.rbegin());    cout << x << endl;   //x=4    x = *(m.rend()-1);    cout << x << endl;   //x=1    system("pause");    return 0;}

insert()与push_back()的区别

insert 第一个参数是迭代器,向迭代器之前的位置插入元素;
vec.insert(vec.end(),a) ==vec.push_back(a);

//vec.insert(vec.end(),a) 测试#include <iostream>#include <vector>using namespace std;int main() {    vector<int> m = { 1,2,3,4 };    m.insert(m.end(), 5);    cout << "{";    for (int i = 0; i < m.size(); i++) {        cout << m[i] << ",";    }    cout << "}" << endl;    // cout {1,2,3,4,5,}    system("pause");    return 0;}//测试在其他位置插入int main() {    vector<int> m = { 1,2,3,4 };    m.insert(m.begin(), 0);    cout << "{";    for (int i = 0; i < m.size(); i++) {        cout << m[i] << ",";    }    cout << "}" << endl;    // {0,1,2,3,4,}    system("pause");    return 0;}//测试插入n个值int main() {    vector<int> m = { 1,2,3,4 };    m.insert(m.begin(), 5,0); //第二个参数为N个数,第三个参数为要插入的值    cout << "{";    for (int i = 0; i < m.size(); i++) {        cout << m[i] << ",";    }    cout << "}" << endl;    // {0,0,0,0,0,1,2,3,4,}    system("pause");    return 0;}

有待补充……

原创粉丝点击