C++ 从向量中的向量中移除类的实例
这是我的班级:C++ 从向量中的向量中移除类的实例,c++,vector,C++,Vector,这是我的班级: class item { private: std::string name; double price; int quantity; public: item(); void setName(std::string itemName); std::string getName(); void setPrice(double itemPrice); double getPrice(); void setQu
class item
{
private:
std::string name;
double price;
int quantity;
public:
item();
void setName(std::string itemName);
std::string getName();
void setPrice(double itemPrice);
double getPrice();
void setQuantity(int itemQuantity);
int getQuantity();
};
我创建了一个类,该类的私有成员为项目向量向量:
class list
{
private:
std::vector<std::vector<item>> notepad;
public:
bool isEmpty();
void addList();
void printLists(bool printTotalPrice);
void addItem();
void removeItem();
void editItem();
void importList(std::ifstream& iFile);
void exportList(std::ofstream& oFile);
};
当我试图编译时,我在上面指出的位置得到一个错误。类似于“没有用于调用的匹配函数”。我肯定我在某个地方取消了引用。
notepad
是一个std::vector
,但是col
是一个std::vector::iterator
,即它指的是一个项
无法从std::vector
中删除项
您想从其直接容器中删除列
,该容器是行
,而不是记事本
:
row->erase(col);
您的命名有点混乱,因为它使迭代器的当前项看起来像是“行”中的“列”。它不是,它是一个项
记事本。erase需要std::vector::iterator而不是std::vector::iteratorisEmpty()==true
只是一个布尔表达式,您不想将其与true
进行比较以确保它是真的吗?也就是说,有一个从1开始的循环,而不是从0开始。另外,为什么不用硬编码值替换用户输入,以提供一个简单的示例?
row->erase(col);