【发布时间】:2020-04-06 13:38:15
【问题描述】:
我想知道如何随机擦除向量中的元素。例如,我有一个向量,其中包含整数 1,2,3,4,5。我想随机删除其中一个。我该怎么做?
int main() {
vector <int> myvec {1,2,3,4,5};
if (!myvec.empty()) {
myvec.erase(myvec.begin());
cout << myvec.at(0);
cout << myvec.at(1);
cout << myvec.at(2);
cout << myvec.at(3);
}
else {
cout << "Vector is empty" << endl;
}
}
以上是我到目前为止的代码。它是一个 if 和 else 语句,用于检查向量是否为空并擦除一个元素。问题是我不确定如何让它删除随机元素。目前它只删除第一个元素。
【问题讨论】:
-
如果您在此处搜索“[c++] 生成随机数”,您将找到有关如何在某个范围内生成随机值的说明(例如,从
0到myvec.size()-1)。生成这样一个值,并将其添加到myvec.begin()以获得引用myvec元素的迭代器。 -
@maany:在学习编程时,有助于将问题分解成更小的部分。你可以删除第二个元素吗?你能写一个函数来接受
int i并删除第 i 个元素吗?之后,您只需要使用随机值调用该函数。 -
@MSalters 是的,我可以通过在开始后添加 +1 来删除第二个元素