如何在 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&lt;char&gt; 是一个 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&lt;char&gt; 来测试字符是否已经在向量中。 【参考方案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++ 中执行“不在数组中”的主要内容,如果未能解决你的问题,请参考以下文章

如果国家/地区不在数组中,我如何选择第一个数组?

Json-schema-如何验证特定元素不在数组中?

如何在 C++ 中执行 os.getpid()?

如何从 C++ 执行 Matlab 脚本

如何在 C++ 中运行外部可执行文件 (.exe)

多玩YY语音的面试题:C++中如何在main()函数之前执行操作?