leo*_*n22 8 c++ iterator vector std
我需要索引访问我的std::vector,因此我必须检查索引是否已经可用于首先删除它们,然后设置一个新值.
这是我的setter函数:
void SetVector(int position, int value) {
std::vector<int>iterator it = testVector.begin();
// need a check here
testVector.insert(it-testVector.begin()+position, value);
}
Run Code Online (Sandbox Code Playgroud)
或者这是我的需求错误的C++集合?(应该动态增长,所以std:array不可能).可以使用std::map但也许它也可能std::vector.
问题的要求并不完全清楚,但我假设你想要最终得到testVector[position] == value,无论是否position在范围内开始.
如果矢量太小,首先生长矢量.这将在已存在的任何内容之后插入零值.
if (position >= testVector.size()) {
testVector.resize(position+1);
}
Run Code Online (Sandbox Code Playgroud)
然后指定要设置的元素:
testVector[position] = value;
Run Code Online (Sandbox Code Playgroud)
我不相信这个问题很清楚.如果你想
"首先删除它们,然后设置一个新值."
这可能会奏效
void SetVector(int position, int value) {
if (position < testVector.size()) {
testVector[position] = value;
}
else {
testVector.push_back(value);
}
}
Run Code Online (Sandbox Code Playgroud)
你真的应该做int position的testVector的size_type.
首先使用以下方法获取向量的迭代器
std::vector<int>::iterator it;
Run Code Online (Sandbox Code Playgroud)
it = myvector.begin();
for (it=myvector.begin(); it<myvector.end(); it++)
std::cout << ' ' << *it;
Run Code Online (Sandbox Code Playgroud)
使用 thsi 迭代器,您可以遍历所有元素并执行相应的操作,例如删除元素
| 归档时间: |
|
| 查看次数: |
24270 次 |
| 最近记录: |