如何在 C++ 中的某些列表 [x][y] 处添加一个值?
How to add a value at some list[x][y] in C++?
我正在尝试以成本 [x][y] 添加一些值,并且列表必须是指针类型。
我这样声明列表:
list<int>* cost = new list<int>[V]; // V being user input
在这里,我试图在成本[x][y] 的位置添加值“c”。我应该如何添加它。当我尝试使用迭代器时,它说
“调试断言失败”
“无法增加终点迭代器”
代码:
void addCost(int x, int y, int c) // adds cost in cost[x][y] and cost[y][x] indicies
{
auto it = cost[x].begin();
advance(it, y);
*it = c;
}
问题是列表最初是空的。所以,有 0 个元素。
所以,你可以写cost[x]
并且可以获得一个迭代器。那没问题。但是,如前所述,列表是空的。因此,如果您尝试推进迭代器,它将失败。
因为it
一开始就等于end()
。而且这个不能提前。
否则,它会起作用。 . .
一些演示示例:
#include <iostream>
#include <list>
constexpr size_t SIZE = 10;
int main() {
size_t numberOfElementsX{ SIZE };
size_t numberOfElementsY{ SIZE };
std::list<int>* cost = new std::list<int>[numberOfElementsX];
for (size_t i = 0; i < numberOfElementsX; ++i)
cost[i].resize(numberOfElementsY);
auto it = cost[3].begin();
std::advance(it, 5);
*it = 42;
for (auto i : cost[3])
std::cout << i << ' ';
}
我正在尝试以成本 [x][y] 添加一些值,并且列表必须是指针类型。 我这样声明列表:
list<int>* cost = new list<int>[V]; // V being user input
在这里,我试图在成本[x][y] 的位置添加值“c”。我应该如何添加它。当我尝试使用迭代器时,它说
“调试断言失败”
“无法增加终点迭代器”
代码:
void addCost(int x, int y, int c) // adds cost in cost[x][y] and cost[y][x] indicies
{
auto it = cost[x].begin();
advance(it, y);
*it = c;
}
问题是列表最初是空的。所以,有 0 个元素。
所以,你可以写cost[x]
并且可以获得一个迭代器。那没问题。但是,如前所述,列表是空的。因此,如果您尝试推进迭代器,它将失败。
因为it
一开始就等于end()
。而且这个不能提前。
否则,它会起作用。 . .
一些演示示例:
#include <iostream>
#include <list>
constexpr size_t SIZE = 10;
int main() {
size_t numberOfElementsX{ SIZE };
size_t numberOfElementsY{ SIZE };
std::list<int>* cost = new std::list<int>[numberOfElementsX];
for (size_t i = 0; i < numberOfElementsX; ++i)
cost[i].resize(numberOfElementsY);
auto it = cost[3].begin();
std::advance(it, 5);
*it = 42;
for (auto i : cost[3])
std::cout << i << ' ';
}