如何在不丢失数据的情况下向矢量中间添加一些内容

How can I add something to the middle of a vector without losing data?

本文关键字:中间 添加 情况下 数据      更新时间:2023-10-16

>我正在尝试在向量的中间添加一个字符串,但我不想丢失正在替换的数据。我希望该元素下面的所有内容都向下移动一个。这可能吗?这是我到目前为止所拥有的

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
 vector<string> v;
 v.push_back("Rich");
 cout << v.back() << endl;
 v.push_back("Debbie");
 cout << v.back() << endl;
 v.push_back("Robin");
 cout << v.back() << endl;
 v.push_back("Dustin");
 cout << v.back() << endl;
 v.push_back("Philip");
 cout << v.back() << endl;
 v.push_back("Jane");
 cout << v.back() << endl;
 v.push_back("Joseph");
 cout << v.back() << endl;
 cout << "Removing Joseph from the vector"<<endl;
 v.pop_back();
 cout << "Adding my name to the vector" << endl;
 vector<string>::iterator pos = v.find(v.begin(),v.end(), "Robin");
 if (pos != v.end()) 
 {
    ++pos;
 }
 v.insert(pos, "Jimmy");

 cout << "The vector now contains the names:";
 for (unsigned i=0; i<v.size(); i++)
 cout << " " << "n" << v.at(i);
 cout << "n";

 return 0;
}

我也在这个查找功能上收到错误。任何帮助将不胜感激。

Error   1   error C2039: 'find' : is not a member of 'std::vector<_Ty>' d:pf3lab3blab3b3b.cpp   28

    2   IntelliSense: class "std::vector<std::string, std::allocator<std::string>>" has no member "find"    d:pf3lab3blab3b3b.cpp   28

像这样:

#include <vector>     // for std::vector
#include <algorithm>  // for std::find
v.insert(std::find(v.begin(), v.end(), "Robin"), "Jimmy");

std::vector 没有 find 函数,改用 std::find:

vector<string>::iterator pos = std::find(v.begin(),v.end(), "Robin");
此操作

在向量中为 O(N)。 如果您经常使用它,请使用链表。