将元素插入向量并替换所有其他元素的函数,从而截断最终元素

Function that inserts an element into a vector and displaces all other elements over, truncating the final element

本文关键字:元素 函数 其他 向量 插入 替换      更新时间:2023-10-16

>我正在尝试编写一个函数 InsertVector,该函数将元素 (elem) 插入到位置 pos 的向量中,然后将所有其他值向右替换,截断向量的最后一个值并返回其值; sz 是向量的大小。

这是代码:

//InsertVector function:
int InsertVector (vector <int> V, int sz, int pos, int elem) {

    int tmp=V.at(sz-1);
    V.insert(V.begin()+pos-1, elem);
    for(int i(pos);i<=sz-2;i=i+1) {
        int tmp2(V.at(i));
        V.at(i)=V.at(i-1);
        V.at(i+1)=tmp2;
    }
    return tmp;

这是我尝试在主服务器上测试该功能的尝试:

int main() {
    vector<int>V;
    V.push_back(2);
    V.push_back(3);
    V.push_back(4);
    int sz(0);
    sz=V.size();
    int pos(0);
    int elem(0);
    cout<<"enter the position desired to modify here"<<endl;
    cin>>pos;
    cout<<"enter value to replace with here"<<endl;
    cin>>elem;
    InsertVector(V, sz, pos, elem);
    PrintVector(V, sz);

}

注意:PrintVector 是我创建的另一个函数,它打印矢量的元素,具有以下形式:

void PrintVector(const vector <int> v1, int sz) {
    for (int i(0);i<sz;i++) {
        cout<<"V["<<i<<"] ="<<v1[i]<<endl;
    }
}

当我编译Xcode时给出一个错误(lldb)。

提前谢谢你。

您不需要将所有值都移到右边。 V.insert()自己会这样做。您可以删除最后一个元素来截断列表。要删除最后一个元素,请使用v.pop_back()