如何迭代字符串向量的向量?(C )
How do I iterate over a vector of string vectors? (c++)
我需要以与我在此示例上使用 的向量>整数:
int main()
{
vector<vector<int>> stuff;
//fill the inner vector, then insert it into the outer vector
for (int i = 0; i < 999; i++)
{
vector<int>temp;
for (int j = 0; j < 9; j++)
{
temp.push_back(i);
++i;
}
stuff.push_back(temp);
}
//display all elements ...
for (int i = 0; i < stuff.size(); i++)
{
for (int j = 0; j < stuff[i].size(); j++) {
cout << stuff[i][j] << "t";
}
cout << endl;
}
}
但是字符串需要不同的方法,因为它们更复杂,在这里,我在一维字符串上迭代:
vector<string> first_arr = {};
string line;
ifstream myfile("source.txt");
if (myfile.is_open())
{
while (getline(myfile, line))
{
first_arr.push_back(line); //READ from file
}
myfile.close();
}
else cout << "Unable to open file";
,但我完全坚持进入内圈。另外,我期望长度非常不同的字符串
我有一段时间没有使用C ,请原谅我的问题,如果您似乎太明显了,
这是一个示例,其中三个 vector
s的 string
s尺寸 5
, 10
和 15
。此示例使用C++11
的基于循环的范围来打印vector
s。
代码:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int main()
{
using SList = std::vector< std::string >;
using VList = std::vector< SList >;
VList vlist;
for ( int i = 5; i <= 15; i += 5 )
{
SList slist { i };
std::fill( slist.begin(), slist.end(), "Test" );
vlist.push_back( slist );
}
for ( const auto& v : vlist )
{
std::cout << "{ ";
for ( const auto& s : v )
{
std::cout << s << ' ';
}
std::cout << "}n";
}
return 0;
}
输出:
{ Test Test Test Test Test }
{ Test Test Test Test Test Test Test Test Test Test }
{ Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test }
这是IDEONE上的实时示例:http://ideone.com/pyyd5p
您可以使用相同的逻辑。除非您想一次打印每个字母的字母。
#include <string>
#include <iostream>
#include <vector>
using std::vector;
int main()
{
vector<vector<std::string> > vec;
std::string tmp;
for(int i = 0; i < 2; ++i)
{
vector<std::string> v;
for(int j = 0; j < 9; ++j)
{
std::cin >> tmp;
v.push_back(tmp);
}
vec.push_back(v);
}
for(int i = 0; i < vec.size(); ++i)
{
for(int j = 0; j < vec[i].size(); ++j)
{
std::cout << vec[i][j] << "t";
}
std::cout << std::endl;
}
return 0;
}
如果要执行C 11方法,则可以替换此片段的最后一个循环:
for(const auto &subVec : vec)
{
for(const auto &str : subVec)
{
std::cout << str << "t";
}
std::cout << std::endl;
}
相关文章:
- 在向量内的向量上迭代
- C++如何乘以包含 std::variant 元素的向量的迭代器?正在执行迭代器类型的转换?
- 如何在 c++ 中使用对向量的向量进行迭代?
- C++结构编译器错误询问向量的迭代器
- C++如何为向量向量构建迭代器
- 在VS 2017中,朋友通过具有私有析构函数的结构的unique_ptr向量进行迭代失败
- 在C++中使用带有自定义向量的迭代器
- 制作可用于初始化向量的迭代器
- C++:向量<向量<int>>迭代器?
- 创建以向量/列表迭代器为键的映射
- 对列表中的向量使用迭代器
- 如何将向量>>>>字节迭代到函数
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- 对已删除其复制构造函数的对象的向量进行迭代 (C2280)
- 如何使用向量 c++ 迭代文件中单词的位置
- 复杂数据类型向量的迭代器
- 特征:矩阵行的计算规范比在向量上迭代计算它们慢
- C :终止循环的最优雅方法,该循环在字符串向量上迭代
- 将向量的迭代器发送到一个函数中.(C )
- 二维向量的迭代器