向量中的数据

tec*_*man 0 c++ vector

我有两个不同类型的矢量即

1. std::vector<project3::Vertex<VertexType, EdgeType>> Vertice2; //Contains a list of Vertices
2. std::vector<std::string>temp12;
Run Code Online (Sandbox Code Playgroud)

我的要求是我想将Vertice2中的所有数据存储到temp12.尝试了很多不同的方法,但得到了错误.即使是铸造对我来说也没有用.

最新的我试过了 temp.assign(g1.Vertice2.begin(), g1.Vertice2.end());

Error: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::basic_string<_Elem,_Traits,_Ax> &)' : cannot convert parameter 1 from 'project3::Vertex<VertexType,EdgeType>' to 'const std::basic_string<_Elem,_Traits,_Ax> &'   c:\program files (x86)\microsoft visual studio 10.0\vc\include\xmemory  208 1   Project_3_Revised
Run Code Online (Sandbox Code Playgroud)

Joh*_*ing 5

你有一个vector苹果,你试图存储在vector橘子里​​.但苹果不是橘子,这是你的基本问题.

您需要创建temp一个vector<Vertex...>,或者您需要将每个Vertex对象转换为a string,然后存储生成的strings.如果您尝试将顶点填入a vector<string>而不进行转换,请将其放弃.你不能也不应该尝试这样做.你正试图把一艘战舰放进一个铅笔杯里.

如果您使用转换,那么使用std::transform您自己设计的转换功能是一种非常简单的方法.

Psudocode如下:

std::string ConvertVertexToString(const Vertex& vx)
{
  std::stringstream ss;
  ss << vx.prop_a << " " << vx.prop_b;
  return ss.str();
}

int main()
{
  ...

  std::transform(Vertice2.begin(), Vertice2.end(), back_inserter(temp12), &ConvertVertexToString);

}
Run Code Online (Sandbox Code Playgroud)