C++求vector数组i到j的和
时间: 2024-10-18 13:23:57 浏览: 24
在C++中,如果你有一个`std::vector<int>`类型的数组并且想要计算其中从索引i到j的所有元素之和,你可以使用迭代器或者范围for循环。以下是两种方法的示例:
1. 使用迭代器:
```cpp
#include <vector>
#include <numeric>
int sum(vector<int>& nums, int i, int j) {
if (i < 0 || j >= nums.size()) {
throw std::out_of_range("Index out of range");
}
return std::accumulate(nums.begin() + i, nums.begin() + j + 1, 0);
}
```
在这个函数中,`std::accumulate`用于将区间内的元素逐个相加。
2. 使用范围for循环:
```cpp
int sum(vector<int>& nums, int i, int j) {
int total = 0;
for (int num : nums) {
if (i <= --j && num >= i && num <= j) { // 注意这里是j递减,以便包含j在内
total += num;
}
}
return total;
}
```
这个方法通过检查每个数是否在指定范围内,并累加符合条件的数。
相关问题
C++vector用数组方法删除元素
以下是使用数组方法删除C++ vector中指定元素的示例代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {8, 5, 6, 2, 4, 7};
int target = 2; // 要删除的元素
// 遍历vector,找到要删除的元素
for (int i = 0; i < v.size(); i++) {
if (v[i] == target) {
// 将后面的元素依次向前移动
for (int j = i; j < v.size() - 1; j++) {
v[j] = v[j + 1];
}
// 删除最后一个元素
v.pop_back();
break;
}
}
// 输出删除元素后的vector
for (int i = 0; i < v.size(); i++) {
cout << v[i] << endl;
}
return 0;
}
```
这段代码首先定义了一个vector `v`,然后使用循环遍历vector,找到要删除的元素。一旦找到目标元素,就将后面的元素依次向前移动,然后使用`pop_back()`函数删除最后一个元素。最后,使用循环输出删除元素后的vector。
c++打印二维vector数组
可以使用 for 循环和嵌套的 for 循环来打印二维 vector 数组,示例如下:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<vector<int> > v = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < v.size(); i++) {
for (int j = 0; j < v[i].size(); j++) {
cout << v[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
输出结果为:
```
1 2 3
4 5 6
7 8 9
```
注意,由于 vector 是 C++ STL 中的一个容器,因此需要在 vector 后面添加一个空格,再在尖括号内添加类型。此外,二维 vector 数组的访问方式是 `v[i][j]`,其中 `i` 表示行数,`j` 表示列数。
阅读全文