如何一次读取一个数字并将其存储在一个数组中,跳过重复?

时间:2012-08-05 19:46:12

标签: c++

我正在尝试将文件中的数字读入数组,丢弃重复数据。例如,假设以下数字在文件中:

41 254 14 145 244 220 254 34 135 14 34 25

虽然数字34在文件中出现两次,但我只想将它存储在数组中一次。我该怎么做?

(已修复,但我想更好的术语是64位无符号整数)(使用的数字大于255)

1 个答案:

答案 0 :(得分:1)

vector<int64_t> v;
copy(istream_iterator<int64_t>(cin), istream_iterator<int64_t>(), back_inserter(v)); 
set<int64_t> s;
vector<int64_t> ov; ov.reserve(v.size());
for( auto i = v.begin(); i != v.end(); ++i ) {
  if ( s.insert(v[i]).second ) 
     ov.push_back(v[i]);
}
// ov contains only unique numbers in the same order as the original input file.