【发布时间】:2022-11-26 23:47:51
【问题描述】:
我正在创建一个程序,它以 vector<multisetvp; 的形式接收 multiset 中的值。当它的个数变为 5 时,将其存储在向量内部的 multiset 中。如果你存储从 1 到 10 的值,当你打印出向量时, 1 2 3 4 5 6 7 8 9 10 我希望它像这样出来。
但是,很难将存储在向量内部的 multiset 中的值输出。寻求有关如何解决此问题的帮助。
我还尝试使用重叠的“基于范围的 for 语句”来输出“sp”的值,但它最终只输出了一个向量的多集。我想存储和输出向量中最多包含五个元素的多重集。
#include <iostream>
#include <set>
#include <vector>
#include <array>
using namespace std;
class MyCharector {
vector<multiset<char>> vp;
vector<multiset<char>>::iterator vit;
multiset<char>* sp;
multiset<char>::iterator sit;
public:
~MyCharector() { }
void ininven(multiset<char> s) {
vp.push_back(s);
}
void getItem(char* item) {
sp = new multiset<char>;
for (int i = 0; i < 10; i++) {
sp->insert(item[i]);
if (sp->size() == 5) {
ininven(*sp);
}
}
delete sp;
}
void dropItem() { // is not use
vit = vp.begin();
vit = vp.erase(vit);
}
void showItem() {
for (vit = vp.begin(); vit != vp.end(); vit++) {
// problems.....
}
}
};
int main(int argc, const char* argv[]) {
MyCharector my;
array<char,10> item = { 'a','a','e','d','g','f','c','c','h','b' };
my.getItem(item.data());
my.showItem();
return 0;
}
【问题讨论】:
-
将
new和delete与STL 容器(如new multiset<char>)一起使用不应该是您的第一选择。 -
那么,如果我不使用它,还有其他方法吗?