#include<iostream> #include<vector> using namespace std; void addInteger(vector<int> numbers,int i) { numbers.push_back(i); cout<<"函数1已执行"<<endl; } void insertInteger(vector<int> numbers,int a,int b) { vector<int>::iterator p=numbers.begin()+b; numbers.insert(p,a); cout<<"函数2已执行"<<endl; } void deleteInteger(vector<int> numbers,int i) { vector<int>::iterator p1=numbers.begin()+i; vector<int>::iterator p2=numbers.begin()+i; numbers.erase(p1,p2); cout<<"函数3已执行"<<endl; } void displayIntegers(vector<int> numbers) { vector<int>::iterator p; for(p=numbers.begin();p!=numbers.end();++p) { cout<<*p; } cout<<endl; cout<<"函数4已执行"<<endl; } int main() { vector<int> numbers; // 添加整数到列表末尾 addInteger(numbers, 1); addInteger(numbers, 2); addInteger(numbers, 3); // 在指定位置插入整数,第二个参数是数值,第3个参数是位置 insertInteger(numbers, 4, 1); // 删除指定位置的整数 deleteInteger(numbers, 2); // 显示列表中的所有整数 displayIntegers(numbers); return 0; }
时间: 2024-03-07 09:50:00 浏览: 55
这段代码中的函数1、函数2、函数3、函数4都没有问题,但是它们的参数列表都是按值传递的,传递的是参数的拷贝,而不是原始的vector对象。这意味着,如果在函数中修改了vector,这些修改不会反映在原始的vector对象中。因此,你需要将参数列表改为按引用传递,如下所示:
```cpp
#include<iostream>
#include<vector>
using namespace std;
void addInteger(vector<int>& numbers,int i) {
numbers.push_back(i);
cout<<"函数1已执行"<<endl;
}
void insertInteger(vector<int>& numbers,int a,int b) {
vector<int>::iterator p=numbers.begin()+b;
numbers.insert(p,a);
cout<<"函数2已执行"<<endl;
}
void deleteInteger(vector<int>& numbers,int i) {
vector<int>::iterator p1=numbers.begin()+i;
vector<int>::iterator p2=numbers.begin()+i+1;
numbers.erase(p1,p2);
cout<<"函数3已执行"<<endl;
}
void displayIntegers(vector<int>& numbers) {
vector<int>::iterator p;
for(p=numbers.begin();p!=numbers.end();++p)
{
cout<<*p;
}
cout<<endl;
cout<<"函数4已执行"<<endl;
}
int main() {
vector<int> numbers;
// 添加整数到列表末尾
addInteger(numbers, 1);
addInteger(numbers, 2);
addInteger(numbers, 3);
// 在指定位置插入整数,第二个参数是数值,第3个参数是位置
insertInteger(numbers, 4, 1);
// 删除指定位置的整数
deleteInteger(numbers, 2);
// 显示列表中的所有整数
displayIntegers(numbers);
return 0;
}
```
这样修改后,你就能正确地执行这段代码了。
阅读全文