首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将vector<vector<char>>转换为vector<string>

将vector<vector<char>>转换为vector<string>
EN

Stack Overflow用户
提问于 2014-04-04 09:09:22
回答 4查看 806关注 0票数 7

我有一个

std::vector<std::vector<char>>,并希望用其内容填充std::vector<string>

我只是无法思考如何访问字符的内部向量,并将字符放入字符串向量。

也许我错了,但我认为std::vector<char>就像字符串一样。所以,这应该不难做到,我只是被困在我的脑海里。

我见过这个: >?,但它并没有让我走多远。

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-04 09:12:14

天真的解决方案应该足够有效:

代码语言:javascript
复制
std::vector<std::string>
chars_to_string(std::vector<std::vector<char>> const & in)
{
    std::vector<std::string> out;
    out.reserve(in.size());
    for (auto const & v : in)
        out.emplace_back(v.begin(), v.end());
    return out;
}
票数 11
EN

Stack Overflow用户

发布于 2014-04-04 09:19:19

这是一个algorithm版本

代码语言:javascript
复制
std::vector<std::vector<char>> a;
std::vector<std::string> b;

std::transform(a.begin(), a.end(), std::back_inserter(b),
[](std::vector<char> const& v) -> std::string {
  return {v.begin(), v.end()};
});
票数 13
EN

Stack Overflow用户

发布于 2014-04-04 09:14:45

这应该能行

代码语言:javascript
复制
std::vector<string> vec;
for(std::vector<std::vector<char>>::iterator itr = source.begin(); 
    itr != source.end(); ++itr) {
    vec.push_back(std::string(itr.begin(),itr.end()));
);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22858335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档