c++ - 重载 << 运算符以插入到 vector 中

标签 c++ vector operator-overloading

我发现许多解决方案都会使输出流运算符过载以打印出 vector 。我需要做相反的事情。类似的东西,

vector<string> v;
  v << "String1" << "String2" << "String3" << "String4" << "String5";

我有这段代码,它只添加了第一个字符串。我明白这是为什么,但我不知道如何添加其他字符串。

template<typename T, typename T2>
vector<T> operator<<(vector<T>& v1, T2 s) {
    v1.push_back(s);
    return v1;
}

最佳答案

在您的函数中,您将返回输入 vector 的拷贝。我很惊讶您的编译器没有警告您在需要引用的地方使用临时对象作为参数。

将返回类型更改为引用。

template<typename T, typename T2>
vector<T>& operator<<(vector<T>& v1, T2 s) {
//      ^^^
    v1.push_back(s);
    return v1;
}

关于c++ - 重载 << 运算符以插入到 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112729/

相关文章:

python - 为什么你可以在字符串上重载 __radd__ 而不是 __rmod__ ?

c++ - 检查在gcc 4.4.7中没有初始化whter atomic ptr(无nullptr)

c++ - 向函数提供参数时使用 '<<' 运算符

c++ - 如何生成格式为 HxHHHHHHHH 的 NSString,表示 Objective C、C++ 或 C 中的浮点值?

java - java内部类的排序 vector

c++ - 如何在 SimGrid 中创建带有 vector 的进程?

c++ - 如何将 vector<string> 的元素复制到字符串中?

c++ - 通过继承类使用来自不同 namespace 的运算符?

c++ - 在 c++ 中传递时对象重置

C++ 结构运算符 : conversion from to non-scalar type requested