我希望 Carnet 类中的 add 函数将一个数字添加到一个位置(位置为字符串),并且当我显示 myclass << ["string"] 时显示该数字
问题是,当我在 main 中运行指令时,它显示我错了(7,7,7),而不是显示我 7,9,10
我认为问题是保存在向量中,但我不知道如何解决,我试过这个:
this->insert(this->begin() + atoi(a.c_str()), b);
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
#include <vector>
using namespace std;
template <typename ElementT>
class Carnet : public vector<ElementT> {
public:
Carnet() : vector<ElementT>() {
}
int operator[] (string materie) {
return this->at(atoi(materie.c_str()));
}
Carnet add(string a, int b) {
this->insert(this->begin() + atoi(a.c_str()), b);
return *this;
}
Carnet removeLast() {
this->pop_back();
return *this;
}
};
int main()
{
Carnet<int> cat;
cat.add("SDA", 9);
cat.add("OOP",7).add("FP", 10);
cout<<cat["OOP"];
cout<<cat["SDA"]; …Run Code Online (Sandbox Code Playgroud) 此函数将 a 添加TElement到 a vector<TElement>:
friend void operator<<(ToDo& todu, const ElementT& D) {
todu.add(D);
return;
}
Run Code Online (Sandbox Code Playgroud)
我想这样称呼它:
todo << elem1 << elem2 << elem3 << elem4...
Run Code Online (Sandbox Code Playgroud)