C++ 如何在C+;中的奇数元素前面添加值-1+;vector,我在使用插入函数时遇到问题 int main() { 向量v; v=初始化(v); cout
如果要在遍历向量时将新元素插入向量,有两种选择:C++ 如何在C+;中的奇数元素前面添加值-1+;vector,我在使用插入函数时遇到问题 int main() { 向量v; v=初始化(v); cout,c++,C++,如果要在遍历向量时将新元素插入向量,有两种选择: 使用insert()返回的迭代器: int main () { vector < int > v; v = initialize (v); cout << "Initial Vector: " << endl; print (v); cout << "Adding -1 in front of Odds: " << endl; v = i
insert()
返回的迭代器
:
int main ()
{
vector < int > v;
v = initialize (v);
cout << "Initial Vector: " << endl;
print (v);
cout << "Adding -1 in front of Odds: " << endl;
v = insert_odds(v);
cout << "Final Vector: " << endl;
print(v);
}
double random (unsigned int &seed)
{
const int MODULUS = 15749;
const int MULTIPLIER = 69069;
const int INCREMENT = 1;
seed = ((MULTIPLIER * seed) + INCREMENT) % MODULUS;
return double (seed) / double (MODULUS);
}
vector <int > initialize (vector < int > v)
{
unsigned int seed=2;
for (int i = 0; i < 10; i++)
v.push_back(int (10 + (10 * random (seed))));
return v;
}
void print (vector < int > v)
{
for (int i = 0; i < v.size(); i++)
cout << v[i] << " ";
cout << endl;
}
bool isOdd(int n)
{
return n%2 != 0 && n > 0;
}
vector<int> insert_odds(vector <int> v)
{
std::vector<int>::iterator it = find_if(v.begin(),v.end(),isOdd);
while(it != v.end())
{
it = find_if(v.begin(),v.end(),isOdd);
v.insert(it,-1);
}
return v;
}
vector::迭代器iter=myVector.begin();
while(iter!=myVector.end())
{
如果((*iter%2)!=0)
iter=myVector.insert(iter,-1)+2;
其他的
++iter;
}
vector<int>::iterator iter = myVector.begin();
while (iter != myVector.end())
{
if ((*iter % 2) != 0)
iter = myVector.insert(iter, -1) + 2;
else
++iter;
}
vector::size\u type idx=0;
而(idx
使用
vector::insert()
中的返回值:
向量v={1,2,3,4,5};
对于(自动it=v.begin();it!=v.end();it++)
{
如果(*it&1)
{
it=v.插入(it,-1);
it++;
}
}
Title解释了它——不,它没有。显示您的代码。请详细说明您的问题。用您尝试过的内容显示a,并用它来解释您对它不起作用的原因的想法。即使在没有澄清的情况下理解问题是什么,都是严肃的道具。错误:调用“插入”myVector.insert时没有匹配的成员函数(idx,-1);您仍然可以使用迭代器-
insert
返回一个。您可以详细说明如何返回吗?我肯定这不是一个好的家庭作业答案,但我会将每个元素复制到一个新向量,如果元素是奇数,请在复制之前向新向量添加一个-1
。
vector<int>::size_type idx = 0;
while (idx < myVector.size())
{
if ((myVector[idx] % 2) != 0)
{
myVector.insert(myVector.begin()+idx, -1);
idx += 2;
}
else
++idx;
}
vector<int> v = { 1, 2, 3, 4, 5 };
for (auto it = v.begin(); it != v.end(); it++)
{
if (*it & 1)
{
it = v.insert(it, -1);
it++;
}
}