如何将字符串的索引保存在向量中?

问题描述

假设我有一个函数 protected function getEntity(): string { return YourEntity::class; } public function foo() { $entityClass = $this->getEntity(); $entity = new $entityClass(); } 它将预先填充的字符串向量作为参数。

我想知道在哪个位置 int pozvec(vector<string> vect) 有字符“p”,特别是“p”。所有字符串都是单字符,但向量被声明为包含字符串。我想保存在变量 x 中找到“p”的索引;

i

似乎不起作用。 strcmp 也没有。 问题比较复杂,但不行的部分是这个。

预先感谢您的帮助!

解决方法

通过该函数,您可以存储您要查找的字符串最后一次出现的索引。这是因为一旦找到第一次出现,您就不会退出循环。

要有条件地退出循环,请使用 break 语句。

for(int i = 0; i< vect.size(); i++)
{
    if(vect[i] == "p")
    {
        x=i;
        break;
    }
}

现在它会在找到第一个匹配项后立即退出。

您还可以使用 std::find 形式的另一个选项。

int index = std::find(vect.begin(),vect.end(),"P") - vect.begin()
,

我不知道你真正想做什么,但这对我来说效果很好:

for (size_t i {}; i < vec.size(); ++i) {
   if (vec.at(i) == "p") {
       x = i;
       break; // I don't know wether you want to break here or not
   } else {
       continue;
   }
}

或者如果你所有的字符串只包含一个字符,这也应该有效:

for (size_t i {}; i < vec.size(); ++i) {
   if (vec.at(i).at(0) == 'p') {
       x = i;
       break; // I don't know wether you want to break here or not
   } else {
       continue;
   }
}