C++:将字符串转换为 vector ,其中每个元素都是该字符的 vector

标签 c++ c++14 stdvector

C++ 中有没有办法将字符串转换为字符 vector 的 vector ?目前,我正在这样做:

std::string guide = "ACGCAC"; 
std::vector< std::vector<char> > word(guide.begin(), guide.end());

但是,正常的索引方式(使用 .at())和设置不起作用。如果我尝试将具有此 vector 的元素设置为另一个 vector (见下文),它不起作用。

word[loc] = bases; //where bases = std::vector<char> and loc = int 

我正在尝试执行与下面的 Python 代码等效的操作,但是是在 C++ 中。感谢您的任何见解。

word = [[letter] for letter in guide]

最佳答案

这个:

std::vector<std::vector<char>> word(guide.begin(), guide.end());

并没有按照您的想法行事。您希望 guide 中的每个 char 用于构建大小为 1 的 vector,其中包含单个 char。但实际上它所做的是尝试从 char 构造一个 vector - 实际上有一个构造函数:#3 :

explicit vector( size_type count, const Allocator& alloc = Allocator() );

也就是说,对于您的第一个字符 'A',您不是在构造一个包含字符 'A' 的 vector ,而是在构造一个包含65 个'\0'。这是因为 char 可以隐式转换为 size_t

只需手动执行您想执行的操作:

std::vector<std::vector<char>> as_individual(std::string const& s) {
    std::vector<std::vector<char>> v;
    v.reserve(s.size());
    for (char c : s) {
        v.push_back({c});
    }
    return v;
}

关于C++:将字符串转换为 vector ,其中每个元素都是该字符的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50105866/

相关文章:

c++ - 由可通过基类访问的最派生类定义的唯一 ID

c++ - 为什么即使使用 constexpr 索引,编译器也允许越界访问数组?

c++ - 编译器不能在 Vector_const_iterator 和 Vector_iterator 之间使用 "convert",即使两者的方法都可用

c++ - 使用 fstream 读取二进制文件并将结果存储在 vector 中

arrays - 如何获取unique_ptr中存储的数组大小?

c++ - 在 STL 中使用 memcpy

c++ - QTableView,一个标题的多列

c++ - 将不可复制的闭包对象传递给 std::function 参数

c++ - 是否可以避免将参数复制到 lambda 函数?

c++ - 从 std::cin 读取密码