tableView.backgroundColor = UIColor.black
tableView.frame = CGRect(x: 0, y: 0, width: 180, height: 400)
#include <iostream>
#include <vector>
#include <cstdlib>
#include <time.h>
using namespace std;
void makeVector();
void breakVector();
vector<char> asciiChar;
vector<char> shuffledChar;
int main(){
srand((unsigned) time(NULL));
makeVector();
breakVector();
}
void makeVector(){
for(char i = 32; i < 127; i++){
asciiChar.push_back(i);
cout << i << " ";
}
cout << endl << endl;
}
void breakVector(){
for(int i = 0; i < asciiChar.size(); i++){
int j = rand() % asciiChar.size();
shuffledChar.push_back(asciiChar.at(j));
asciiChar[j].erase(); //34 error *******
}
for(int i = 0; i < 95; i++){
cout << shuffledChar.at(i) << " ";
}
}
我试图删除向量中用于为其他向量赋值的位置以避免重复值。这段代码应该创建一个向量并将其内容移植到另一个内容中。
我在另一个程序的类似功能中使用了.erase(),它对我有用,但我不理解这个错误信息,而且我的搜索结果也不相关。
答案 0 :(得分:2)
asciiChar[j].erase();
您正在尝试对char元素使用erase()方法,而不是对矢量本身。
erase是矢量类的一种方法。因此,您必须在asciiChar
向量上使用它,而不是在向量的元素上使用它。
另外请注意,在迭代元素时,永远不会从矢量中删除元素。
你想要实现的目标可能就是:
while(asciiChar.size() > 0){
int j = rand() % asciiChar.size();
shuffledChar.push_back(asciiChar.at(j));
asciiChar.erase(asciiChar.begin() + j);
}