如何在 C++ 中执行“不在数组中”
Posted
技术标签:
【中文标题】如何在 C++ 中执行“不在数组中”【英文标题】:How to do 'not in array' in c++ 【发布时间】:2018-04-23 03:13:58 【问题描述】:我正在尝试查看一个数组是否包含给定的字母。如果数组没有字母,那么我们将它添加到数组中。我知道如何在 python 中使用not in arr
语法来做到这一点,但是在使用 c++ 方法时遇到了很多麻烦。
这是python代码:
vowel_arr = []
#Checks
for i in arr:
if len(i)>input_pos and i[input_pos] not in vowel_arr:
vowel_arr.append(i[input_pos])
这是我的 C++ 代码尝试:
word_arr = [ 'c', 'co', 'cmo', 'cmop','cmopu','cmoptu', 'cemoptu', 'cemoprtu']
input_pos = 2
vowel_arr = [o,m,e]
//Creates a list that contains unique letters for a given position
vector <char> unique_arr;
for(int j = 0; j < word_arr.size(); j++)
if ((word_arr[j].size() > input_pos) && (find(unique_arr.begin(),
unique_arr.end(), word_arr[j][input_pos]) == unique_arr.end()))
unique_arr.push_back(word_arr[j][input_pos]);
【问题讨论】:
vector<char>
是一个 char 数组,而不是 char* 或字符串。当您询问时,请说明您当前的代码有什么问题,或参考How to Ask。
How to find out if an item is present in a std::vector? 的可能重复项。我不确定我是否了解您的确切用例......但这样的事情可能对您有用:std::find(vector.begin(), vector.end(), item) != vector.end()
即使你让这段代码工作,如果你的数组已经有很多字符,而且你想添加一个唯一的,这也是非常低效的。考虑一个帮助器std::unordered_set<char>
来测试字符是否已经在向量中。
【参考方案1】:
如果你只想要 calcs 是字符串或数组中的符号的方法,那么这里有一些代码:
bool IsInString( const std::string& str, char symb )
return str.find(symb) != std::string::npos;
int main()
std::vector<std::string> VectStr "test","qwe", "Array";
//Example for IsInString function
for ( size_t i = 0; i < VectStr.size(); i++ )
if ( IsInString(VectStr[i], 'w') )
std::cout << i << " element contains" << std::endl;
//Example for all containers with char
for ( size_t i = 0; i < VectStr.size(); i++ )
if ( std::find(VectStr[i].begin(), VectStr[i].end(), 'w') != VectStr[i].end() )
std::cout << i << " element contains" << std::endl;
输出是:
1 element contains
1 element contains
Program ended with exit code: 0
【讨论】:
以上是关于如何在 C++ 中执行“不在数组中”的主要内容,如果未能解决你的问题,请参考以下文章