Replace an element into a specific position of a vector

后端 未结 3 1600
臣服心动
臣服心动 2020-12-07 13:00

I want to replace an element into a specific position of a vector, can I just use an assignment:

// vec1 and 2 have the same length & filled in somehow
v         


        
3条回答
  •  囚心锁ツ
    2020-12-07 13:44

    You can do that using at. You can try out the following simple example:

    const size_t N = 20;
    std::vector vec(N);
    try {
        vec.at(N - 1) = 7;
    } catch (std::out_of_range ex) {
        std::cout << ex.what() << std::endl;
    }
    assert(vec.at(N - 1) == 7);
    

    Notice that method at returns an allocator_type::reference, which is that case is a int&. Using at is equivalent to assigning values like vec[i]=....


    There is a difference between at and insert as it can be understood with the following example:

    const size_t N = 8;
    std::vector vec(N);
    for (size_t i = 0; i<5; i++){
        vec[i] = i + 1;
    }
    
    vec.insert(vec.begin()+2, 10);
    

    If we now print out vec we will get:

    1 2 10 3 4 5 0 0 0
    

    If, instead, we did vec.at(2) = 10, or vec[2]=10, we would get

    1 2 10 4 5 0 0 0
    

提交回复
热议问题