class largeNum
{
public:
std::vector<int>& getValue();
private:
std::vector<int> value;
};
这是我使用getValue()方法的基类。
std::vector<int>& largeNum::getValue() {
return value;
}
现在出现错误,试图在向量中插入值:
largeNum operator+(largeNum& summand1, largeNum& summand2) {
largeNum returnNum;
int size = 0;
//adapts the smaller vektor to the larger vektor by resizing him and reversing him so 1 turns into 00...01
if (summand1.getValue().size() > summand2.getValue().size()) {
for (int i = 0; i < (summand1.getValue().size() - summand2.getValue().size()); i++) {
//error happens here
summand2.getValue().insert(0, 0);
}
}
[...]
有趣的是,我可以使用除vector::insert
和vector::erase
之外的所有方法。
它给我一个错误,说我需要传递两个整数,我正在做。
没有重载函数的实例“std :: vector&lt; _Ty,_Alloc&gt; :: insert [with _Ty = int,_Alloc = std :: allocator&lt; int&gt;]”匹配参数列表
答案 0 :(得分:4)
overloads of vector<T>::insert
都没有占据位置。它们都采用迭代器,因此您需要在向量上调用begin
来获取插入位置。
为避免两次调用summand1.getValue()
,请将结果存储在引用中:
std::vector<int> &tmp = summand1.getValue();
tmp.insert(tmp.begin(), 0);
答案 1 :(得分:1)
wordCountsWithGroup.map(x => (x._1, x._2.map(_._1).sum)
的第一个参数必须是迭代器,而不是insert()
。
此外,让一个公共成员函数返回对私有成员的引用是一种难闻的气味,因为你实际上正在打破封装。
因此我的建议是使用模式&#34;告诉,不要问&#34;:
int