我来了一个类似下面的程序
firstMissingPositive(vector<int> &A) {
vector<bool> dict(A.size()+1,false);
for(int i=0;i<A.size();i++){
if(A[i]>0 && A[i]<dict.size()) dict[A[i]]=true;
}
if(A.size()==1 && A[0]!=1) return 1;
else if(A.size()==1 && A[0]==1) return 2;
int i=0;
for(i=1;i<dict.size();i++){
if(dict[i]==false) return i;
}
return i;
}
在这个程序中,我无法通过以下行获得什么意思
vector<bool> dict(A.size()+1,false);
什么是字典和这句话?
答案 0 :(得分:3)
这只是一个变量。
变量的定义调用向量的特定构造函数以使用特定大小对其进行初始化,并将所有元素初始化为特定值。
相当于
vector<bool> dict;
dict.resize(A.size()+1,false);
参见例如有关可用构造函数的更多信息,请this std::vector
constructor reference。
答案 1 :(得分:1)
您声明bool
的容器(它表示仅存储0
/ 1
(8B
))的变量,其元素数与{{相同1}} vector int
并且所有这些元素都设置为A
- &gt; false
。
它调用此构造函数
0
示例强>:
这是 vector (size_type n, const value_type& val,
const allocator_type& alloc = allocator_type());
vector
:
A
它的大小是5,所以它会声明大小为5的容器,初始化为 0 1 2 3 4 <- Indexes
+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | (int)
+---+---+---+---+---+
。
0
在这种情况下,它用于标记第一个 0 1 2 3 4 <- Indexes
+---+---+---+---+---+
| 0 | 0 | 0 | 0 | 0 | (bool)
+---+---+---+---+---+
中的索引。
例如,它通常用于Sieve of Eratosthenes。您可以在每次迭代时将vectror
设置为素数。它将是(对于数字1
)
0-4
然后您知道哪些索引是 0 1 2 3 4
+---+---+---+---+---+
| 0 | 0 | 1 | 1 | 0 |
+---+---+---+---+---+
vector
中的素数。
A
答案 2 :(得分:1)
它是vector类型的变量“dict”的定义。请先把它谷歌