繁体   English   中英

为什么我不能将这个向量复制到另一个向量?

[英]Why can't I copy this one vector to another?

编译器在“extra = lines[i]”行中为我的反向向量 function 显示以下错误消息。我想使用赋值运算符将一个向量复制到另一个向量。

|与 'operator=' 不匹配(操作数类型为 'std::vectorstd::__cxx11::basic_string<char >' 和 '__gnu_cxx::__alloc_traitsstd::allocator<std::__cxx11::basic_string<char >, std: :__cxx11::basic_string >::value_type' {aka 'std::__cxx11::basic_string'})

代码:

void reverse_vector(vector<string>& lines){
    vector<string> extra;
    int i;
    for(i = 0; i < lines.size(); i++){
        extra = lines[i];
        lines[i] = lines[lines.size() - 1 - i];
        lines[lines.size() - 1 - i] = extra;
        cout << lines[i] << " ";
        cout << endl;
    }
}

两个问题:

  1. extra应该具有lines[i]的类型。 所以它应该只是std::string extra
  2. 当您像这样实现反向时,您只想迭代数组长度的一半。

并且为了可读性:

  1. 你应该使用std::swap()来交换东西。 它更容易阅读。

所以它看起来像:

void reverse_vector(vector<string>& lines) {
    for(int i = 0; i < lines.size() / 2; i++) {
        string extra = lines[i];
        lines[i] = lines[lines.size() - 1 - i];
        lines[lines.size() - 1 - i] = extra;
    }
}
void reverse_vector(vector<string>& lines) {
    for(int i = 0; i < lines.size() / 2; i++)
        std::swap(lines[i],
                  lines[lines.size() - 1 - i]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM