问题描述
假设我有一个函数
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;
}
}