计算向量的std ::映射为键的值,并将双倍作为值

Computing the values of a std::map of vector as the key and double as the value?

本文关键字:向量 std 映射 计算      更新时间:2023-10-16
 std::map<std::vector<double>, double> MyMethod(std::map<std::vector<double>, double> mappingSourceToTarget, int radius)
{
    std::map<std::vector<double>, double> mappingSourceToTargetNew(mappingSourceToTarget);
    std::map<std::vector<double>, double>::iterator it_trgt,it_src;
    double sumOfNormals1 = 0;
    int size = mappingSourceToTarget.size(), i=0;
    for (it_src = mappingSourceToTarget.begin(), it_trgt = mappingSourceToTargetNew.begin(); i < size + (radius * 2) ; i++, it_src, it_trgt++)
    {
        auto elem = mappingSourceToTargetNew;
        if (i == 0)
        {
            //it_trgt->first.at(i % size) = it_src->first.at(i%size);
            mappingSourceToTargetNew.at(i % size) = mappingSourceToTarget.at(i % size);
            sumOfNormals1 += mappingSourceToTarget.at(i % size);

在这里,我遇到了麻烦,如何将值从一个地图放到另一个地图上。

我正在使用圆形阵列的概念,因此在这里使用I%尺寸,向量是坐标,而双重是该点的强度值。

索引的事情与.at((不使用,我真的不知道该怎么做

我必须仅使用地图(任务(使其正常工作。

以索引(i%size(

将值从一个地图复制到另一个地图

1(使用迭代器读取键值,即使用第一/秒。

2(当迭代器到达末端时,将其设置为begin((。它将像i % size

一样发挥作用

这是一些示例代码,可以显示以下想法:

#include <iostream>
#include <map>
int main() {
    std::map<int, int> m {{1, 100}, {2, 200}};
    auto s = m.size();
    std::cout << "size = " << s << std::endl;
    auto i1 = m.begin();
    auto i2 = m.end();
    for (auto i = 0; i < 5; ++i)
    {
        std::cout << "key=" << i1->first << " value=" << i1->second << std::endl;
        ++i1;
        if (i1 == i2)
        {
            // We reached the end so go back to the begining
            i1 = m.begin();
        }
    }
    return 0;
}

输出:

size = 2
key=1 value=100
key=2 value=200
key=1 value=100
key=2 value=200
key=1 value=100