我有以下代码:
std::set< std::vector<int> > testSet;
vector<int> v0 = vector<int>(3);
vector<int> v11 = vector<int>(3);
v0[0] = 0;
v0[1] = 10;
v0[2] = 20;
std::cout << v0[0] << endl;
testSet.insert(v0);
v0[0] = 1;
v0[1] = 11;
v0[2] = 22;
testSet.insert(v0);
std::set< std::vector<int> >::iterator it;
for (it = testSet.begin(); it != testSet.end(); it++) {
const std::vector<int>& i = (*it);
std::cout << i[0] << endl;
}
当我改变时:
const std::vector<int>& i = (*it)
至:
std::vector<int>& i = (*it)
它停止工作。显然(*it)
返回 a const vector<int>&
,但为什么会这样呢?该集合包含向量,而不是const
向量。