我有一组地图:
std::array<std::map<double, double>, 8> freqMap;
Run Code Online (Sandbox Code Playgroud)
填充它时,我需要在不同的数组索引处向地图添加条目。我知道我可以创建 8 个不同的地图,填充它们,然后将它们添加到数组中,但是是否可以直接在数组中将条目附加到地图?
例如,我如何将着手添加的映射条目key5.0,val3.3至数组索引2,然后添加另一条目数组索引3,然后附加另一条目索引2再次等。
我也可以使用std::vector地图,但仍然看不到以这种方式添加条目的方法。
这是一个例子。我正在从文件中读取数据并想直接更新我的数据结构:
while (fin >> arrayIdx >> key>> val)
freqMaps[arrayIdx] = ??
Run Code Online (Sandbox Code Playgroud) 好的,所以我有一个排序的std::vector<std::pair<int,double>>. 我似乎无法找到的是如何根据 std::pair (int) 的“第一个”元素的值从向量中删除条目。我可能会在我的算法中多次执行此操作,因此我不想每次都遍历向量(其中可能包含多达一百万个条目)。我知道我们可以使用 std::erase 或 remove 轻松删除基于索引的元素,但是有没有办法根据对的第一个元素的值来执行此操作?或者我们可以获取该元素的索引然后使用 std::erase 吗?
注意: std::pair 的第一个元素的值对于向量是唯一的。鉴于程序的限制,我需要使用向量(即不能使用地图或不同的容器)。
示例:我有一个容器:
std::vector<std::pair<int,double>> vec = { {20, 60.3}, ... {10, -20.2}, {1020, -80.9}};
Run Code Online (Sandbox Code Playgroud)
我想从向量中快速删除第一个元素 == 10 的元素,但我不知道它位于向量的哪个索引处。