C++ 向量值不按插入顺序

C++ 向量值不按插入顺序,c++,sorting,vector,C++,Sorting,Vector,我正在向向量中插入值: 向量列表参数映射 像这样: listedParameterMap.insert(listedParameterMap.end(),1,parameterMap) 如果我稍后检查向量,则顺序颠倒。 我错过什么了吗 编辑: 我想它可能在别的地方。。。我刚有个主意。但我明天会试试。 今天我几乎让aleady至少有一个大脑堆满了我的代码;) 无论如何,谢谢大家的帮助。如果有什么变化,我会告诉你的 EDIT2: 似乎错误在其他地方。我只知道它发生在哪里,但直到现在还不知道为什么。当

我正在向向量中插入值:
向量列表参数映射

像这样:
listedParameterMap.insert(listedParameterMap.end(),1,parameterMap)

如果我稍后检查向量,则顺序颠倒。 我错过什么了吗

编辑:
我想它可能在别的地方。。。我刚有个主意。但我明天会试试。 今天我几乎让aleady至少有一个大脑堆满了我的代码;)

无论如何,谢谢大家的帮助。如果有什么变化,我会告诉你的

EDIT2:
似乎错误在其他地方。我只知道它发生在哪里,但直到现在还不知道为什么。当地图只需要填充一次时,它会被填充两次。 由于某些原因,每次仅对特定值执行。这就是为什么看起来这些值是颠倒的。
如果我需要帮助,我会提出一个新问题。 谢谢大家


更新:

向量现在可以了。发现了问题。自身代码的盲目性;)

它不会影响我的程序,我的地图是颠倒的。

我刚刚创建了一个新的地图,插入值,然后打印值,这就像预期的那样工作。

你为什么不简单地写:

listedParameterMap.push_back(parameterMap);

它的界面比你在文章中所做的要简单。

我不太理解你的示例代码,但是如果你想按顺序将项目插入向量,你通常需要使用
推回
。举个简单的例子:

std::vector<int> numbers;
for (int i=0; i<10; i++)
    numbers.push_back(i);
std::向量数;

对于(int i=0;i我真的不认为你想做一个使用向量作为键的映射,是吗?这闻起来你有更重要的设计问题


至于按已知(和预设的顺序)向向量添加内容,请使用push_back()。

listedParameterMap是一个向量而不是一个映射。对不起…我开始写一些错误->更正为什么要编写
listedParameterMap.insert(listedParameterMap.end(),1,parameterMap);
?我觉得它与
listedParameterMap.insert相同(listedParameterMap.end(),parameterMap)
。我们需要看到更多的代码,我们需要知道您对输出的期望,以及您得到的结果。我认为这段代码并不能解释整个故事,因为这里所写的应该是有效的。@Beasly,那么是什么让您停止尝试,您看到了什么错误或意外行为?即使我同意他应该这样做。确实如此esn没有真正解决这个问题,因为他对insert的调用应该是一样的。即使在您的示例中,您要使用
numbers.insert(numbers.end(),i)
你也会得到同样的答案。虽然有点麻烦,但似乎这不是问题所在。@Andrew Noyes:理论上你是对的。如果他正确使用
插入
,元素应该按顺序结束——但代码非常脆弱,很容易出错(如果他用这种方式,我们就不会看到这个问题)使用
push_back
基本上是不可能把事情搞砸的。我可以同意,有人更可能以这种方式犯编程错误,但他的代码是正确的,所以使用任何一种方法,实际问题可能都是一样的,所以我认为这个问题不会消失。是的,我想要……我需要它的地方有一些要求。Th有很多更有效的方法可以做到这一点——例如,将键向量存储在别处,并在映射中使用唯一的id(例如int值)作为键值。例如,类似于RDBMS中使用的方法。您需要一个映射向量,每个映射向量将一个字符串向量映射到另一个字符串向量?这是一个“有趣”的设计!