从地图中获取项目并添加到向量c++中
Get Items from map and add to a vector c++
我在程序中死记硬背了这段代码
JSONNode::const_iterator iter = root.begin();
for (; iter!=root.end(); ++iter)
{
const JSONNode& arrayNode = *iter;
std::string type = arrayNode["type"].as_string();
if(type == "node")
{
std::string id = arrayNode["id"].as_string();
double lat = arrayNode["lat"].as_float();
double lon = arrayNode["lon"].as_float();
Node node;
node.SetId(id);
node.SetLatitude(lat);
node.SetLongitude(lon);
nodesMap.insert( std::pair<std::string, Node>(id, node) );
}
else if(type == "way")
{
std::string wayId = arrayNode["id"].as_string();
wayNode.SetId(wayId);
std::vector<Node> collection;
const JSONNode& wayNodes = arrayNode["nodes"];
const JSONNode& nodes = wayNodes.as_array();
JSONNode::const_iterator WayIter = nodes.begin();
for (; WayIter!=nodes.end(); ++WayIter)
{
const JSONNode& arrayNode = *WayIter;
std::string id = arrayNode.as_string();
if(nodesMap.find(id) != nodesMap.end())
{
collection.push_back(nodesMap.find(id)->second);
nodesMap.erase(id);
}
}
wayNode.SetNodesCollection(collection);
std::cout<<"Item Id ->>>>>>>>>>>>>" << collection[2].GetId() << std::endl;
}
}
节点.h
class Node {
private:
std::string id;
double latitude;
double longitude;
public:
Node();
Node(const Node& orig);
Node(std::string id, double lat, double lon);
virtual ~Node();
void SetLongitude(double longitude);
double const & GetLongitude() const;
void SetLatitude(double latitude);
double const & GetLatitude() const;
void SetId(std::string id);
std::string const & GetId() const;
};
Node.cpp
Node::Node() {
}
Node::Node(const Node& orig) {
}
Node::~Node() {
}
Node::Node(std::string id, double lat, double lon){
this->id = id;
this->latitude = lat;
this->longitude = lon;
}
void Node::SetLongitude(double longitude) {
this->longitude = longitude;
}
double const & Node::GetLongitude() const {
return longitude;
}
void Node::SetLatitude(double latitude) {
this->latitude = latitude;
}
double const & Node::GetLatitude() const {
return latitude;
}
void Node::SetId(std::string id) {
this->id = id;
}
std::string const & Node::GetId() const {
return id;
}
但是当我尝试ptint第二项std::cout<lt;"项目Id->>>>>>"<lt;collection[2].GetId((<lt;std::endl;它得到一个空白值。但是集合的大小是82,请获取集合大小的正确值。
我需要一些帮助来解决这个问题。提前感谢!
Node::Node(const Node& orig) {
this->id = orig.id;
this->latitude = orig.latitude;
this->longitude = orig.longitude;
}
将复制构造函数修改为如下。
相关文章:
- 有没有办法向这个向量添加元素?
- 这种方式是否可以接受向向量添加unique_ptr?
- 向向量添加元素
- 无法向向量添加回调
- 如何将向量添加到结构中以创建一个库存系统,在该系统中,我可以仅使用一个结构向系统添加多种不同的葡萄酒
- 在一个类中向向量添加元素不适用于其他类
- 以下向 c++ 向量添加元素的方法有什么区别
- 我可以在不推送向量的情况下向向量添加值吗?
- 向向量C++添加对
- 使用单词键将多个行号的向量添加到我的地图中
- 在C++中向指针数组中的向量添加元素
- 要创建一个一开始没有特定维度的类Vector,请在类中创建一个方法,允许向向量添加维度
- 一次向 C++ 向量添加多个元素
- STL - 向存储在 STL 映射中的向量添加值
- 向向量添加向量
- 如何向结构类型的向量添加点
- 为什么我的课'当我向向量添加实例时,会调用s析构函数
- 向c++向量添加新字段
- 在c++中向向量添加对象vs向向量添加指针
- 当Type为unique_ptr时,为向量添加运算符[]