使用vector二维数组

用vector二维数组写一个电话薄

代码如下:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cctype>

int main(int argc, char *argv[])
{
	using namespace std;
	string file_name = "F:\\Code\\C++\\C++ Primer 5th\\C++ Primer 5th\\temp\\temp.txt";
	ifstream input(file_name);

	if (!input) {
		cerr << "couldn‘t open: " << file_name << endl;
	}

	string temp;
	int count = 0;
	vector<string> storage;        // 存储姓名
	vector<string> num;          // 存储某一个人的电话号码
	vector<vector<string>> phone_num;  // 存储所有人的电话号码

	input >> temp;
	storage.push_back(temp);

	while (input >> temp) {
		if (isalpha(temp[0])) {
			storage.push_back(temp);
			phone_num.push_back(num);
			num.clear();
		}
		else {
			num.push_back(temp);
		}
	}
	phone_num.push_back(num);

	for (auto name : storage) {
		cout << name << " ";
	}
	cout << endl;

	for (auto &row : phone_num) {
		for (auto &col : row) {
			cout << col << " ";
		}
		cout << endl;
	}
	input.close();
	return 0;
}
以下是temp.txt的内容

morgan 2015552368 8625550123
drew 9735550130
lee 6095550132 20155550175 805550000

以下是程序运行结果

  

时间: 2024-08-08 06:00:56

使用vector二维数组的相关文章

C++ vector二维数组

C++ 构建二维动态数组 int **p; p = new int*[10]; //注意,int*[10]表示一个有10个元素的指针数组 for (int i = 0; i < 10; ++i) { p[i] = new int[5]; } 这样就构成10*5的数组 vector二维数组 int i,j; vector<vector<int>> array(5); for (i = 0; i < array.size(); i++) array[i].resize(3)

SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )

图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河.但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否

Vector 二维数组 实现

1.C++实现动态二维数组 int **p; p = new int*[10]; //注意,int*[10]表示一个有10个元素的指针数组 for (int i = 0; i < 10; ++i) { p[i] = new int[5]; } 2.利用指针数组实现二维数组 int v[2][3]={{1,2,3},{4,5,6}}; int (*a)[3]=v; //a是指向有3个int元素的数组的指针 cout<<**a; // 1 cout<<**(a+1); // 4

用vector代替实现二维数组

vector可以用来模拟数组,当然也可以用来模拟二维数组: 定义如:vector<int>a[100];   相当于定义了一个100行的数组,当每行的大小是不确定的 模板应用如下: #include <stdio.h> #include <vector> #include <algorithm> using namespace std; int main() { vector<int>a[100]; vector<int>::iter

vector动态二维数组(容器的容器)占用内存分析

之前在这里写过一篇"C++中的动态二维数组".在C++中没有动态二维(多维)数组.但是根据原理我们可以自己创建. 在看过STL的vector源代码后"<STL源码剖析>---stl_vector.h阅读笔记"后,想到可以用容器的容器来做二维数组. 创建一个2x4的二维数组.想到的办法是:先创建一个容器的容器,外层大小的2(2行),然后里面容器小大为4(4列). int row=2,col=4; vector<vector<int> &g

C++学习笔记之由文本文件读取数据到vector模板建立的二维数组 并存储为新的文本文件

阅读本文可首先参考: C++学习笔记之输入.输出和文件 测试数据: 1 /*读取txt文件到二维数组*/ 2 #include <iostream> 3 #include <fstream> 4 #include <vector> 5 #include <string> 6 7 using namespace std; 8 9 typedef vector< vector<int> > D2array; //二维数组 10 typed

转:用STL中的vector动态开辟二维数组

用STL中的vector动态开辟二维数组 源代码:#include <iostream>#include <vector>using namespace std;int main(){ int m, //行数     n; //列数 cout << "input value for m,n:"; cin>>m>>n;  //注意下面这一行:vector<int后两个">"之间要有空格!否则会被认

C++ vector 实现二维数组

在STL中Vector这一容器,无论是在封装程度还是内存管理等方面都由于传统C++中的数组.本文主要是关于使用Vector初始化.遍历方面的内容.其他二维的思想也是类似的. 这里简单叙述一下C++ 构建二维动态数组 int **p; p = new int*[10]; //注意,int*[10]表示一个有10个元素的指针数组 for (int i = 0; i < 10; ++i) { p[i] = new int[5]; } 定义一个二维整形数组并初始化: vector<vector<

二维数组中的查找

参与人数:5313时间限制:1秒空间限制:32768K 通过比例:17.59% 最佳记录:0 ms|0K(来自  牛客游客) 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 提交时间:2015-09-25 语言:C++ 运行时间:0ms 占用内存:8568K 状态:答案正确 /* 思路:由于该二维数组,每行从左至右递增,每列从上到下递增. 故从左下角开始,向上递减,向