gpt4 book ai didi

c++ - 通用运算符 >> 用于 std::vector

转载 作者:行者123 更新时间:2023-11-28 04:09:18 25 4
gpt4 key购买 nike

我刚刚了解重载运算符并决定重载 operator >>对于 std::vector .我不确定这是否是正确的方法,但它有效。

void operator >> (istream &in, vector<int> &_vector)
{
int vectorSize;
cout << "Enter vector size\n";
cin >> vectorSize;

_vector = vector<int>(vectorSize);

cout << "Enter the array\n";
for (int &element : _vector)
in >> element;
}

但后来我意识到这个方法只适用于vector<int>并且不适用于其他载体。我怎样才能使其通用并适用于任何 vector ?

最佳答案

最小的变化:

template <class T>
void operator >> (istream &in, vector<T> &_vector)
{
int vectorSize;
cout << "Enter vector size\n";
cin >> vectorSize;

_vector = vector<T>(vectorSize);

cout << "Enter the array\n";
for (T &element : _vector)
in >> element;
}

请注意,您应该对代码做很多改进:使用 std::size_t,使用 std::vector::resize(),避免 std::cin/cout 在运算符中,避免 using namespace std;,返回适当的类型,避免以 _ 开头的标识符(即使有效在这里)...加上他们在问题评论中告诉你的其余部分。

关于c++ - 通用运算符 >> 用于 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58156241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com