c++ - 修改vector的元素(按值,按引用)函数C++

标签 c++ function vector pass-by-reference pass-by-value

我有一个函数,我必须修改 vector 的值。 在 C++ 中返回 vector 是一个好习惯吗?

功能一:

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;
}

功能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
}

最佳答案

您的两个函数用于两个不同的目的。

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

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

关于c++ - 修改vector的元素(按值,按引用)函数C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19678437/

相关文章:

c++ - 未初始化和复制的指针变量的地址

c++ - 将另一个实例添加到同一 vector 后,对成员变量的引用中断

C++将整数映射到 bool 数组

c++ - <未解析的重载函数类型> 尝试将聚合对象的方法传递给其类方法时

javascript - 当 for 循环处理对象数组时 forEach 不起作用

c++ - GDB 和 C++ : Printing vector of pointers to objects

c++ - CPP 线程中的嵌入式 Ruby 崩溃

javascript - 如何获取对象的方法?

c++ - 在文件 C++ 中写入和读取结构的 3d vector

python - 除以矩阵的向量列