【发布时间】:2019-12-29 14:01:52
【问题描述】:
我有一个非常大的std::vector v std::vector<std::string> v。现在我想比较向量中的哪些元素以某个子字符串开头 str。最快的方法是什么?
我正在考虑一个 for 循环,它迭代地将 v 的每个元素的开头与子字符串 str 进行比较。我第一次尝试
std::string substring = "bla";
for (long unsigned int i = 0; i < v.size(); i++)
{
if (!strncmp(v[i].c_str(), substring.c_str(), substring.size()))
{
std::cout << "Item found: " << v[i] << std::endl;
}
}
还有什么更好的选择?
【问题讨论】:
-
只需这样做:
if ( v[i].substr(0, substring.size()) == substring ) { /* ... */ }用于字符串比较。
标签: c c++ c++ c++11 stdvector stdstring c++-standard-library