我有两个不同类型的矢量即
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)
你有一个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)
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |