修改向量的元素(按值,按引用)函数C++

Han*_*Goc 16 c++ function vector pass-by-reference pass-by-value

我有一个函数,我必须修改向量的值.返回向量是C++的一个好习惯吗?

功能1:

vector<string> RemoveSpecialCharacters(vector<string> words)
{
    for (vector<string>::iterator it=words.begin(); it!=words.end(); )
    {
        if(CheckLength(*it) == false)
        {
            it = words.erase(it);
        }
        else{
            ++it;
        }
    }//end for

    return words;
}
Run Code Online (Sandbox Code Playgroud)

功能2:

void RemoveSpecialCharacters(vector<string> & words)
{
    for (vector<string>::iterator it=words.begin(); it!=words.end(); )
    {
        if(CheckLength(*it) == false)
        {
            it = words.erase(it);
        }
        else{
            ++it;
        }
    }//end for
}
Run Code Online (Sandbox Code Playgroud)

bil*_*llz 6

您的两个功能有两个不同的用途.

  • 功能1:作为remove_copy.它不会修改现有的容器; 它会复制并修改它.

  • 功能2:作为remove.它将修改现有容器.