为什么 v[0] 和 *v.begin() 打印 0,即使我没有传递一些 0 作为数组的输入值

why v[0] and *v.begin() printing 0 even though i am not passing some 0 as input value for array

本文关键字:数组 输入 begin 为什么 打印      更新时间:2023-10-16
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int testcases = 0;
    int length;
    int item =0;
    std::vector<int> v;
    cin>>testcases;
    for (int i=0; i<testcases; ++i)
    {
        cin>>length;
        v.resize(length);
        for (int j=0; j<length; ++j)
        {
            cin >> item;
            cout << "item entered:" << item << endl;
            v.push_back(item);
        }
        cout << v[0] << " ";
        cout << *v.begin() << " ";
        int loop=0;
        cin>>loop;
        int range1=0, range2=0;

        int result = 0;
        for (int k=0; k<loop; ++k)
        {
            result = 0;
            cin>>range1;
            cin>>range2;
            cout << v[range1]<< " "<< v[range2] <<endl;
            while (range1<=range2)
            {
                result = result^v[range1];
                ++range1;
            }
            cout << result << endl;
        }
    }

    return 0;
}

为什么 v[0] 和 *v.begin(( 打印 0,即使我没有传递一些 0 作为数组的输入值

这是因为push_back调用添加到向量的末尾,即在resize调用创建的项之后。

如果要在向量中设置特定条目,则需要在输入循环中使用数组索引语法。