# 可从后往前看，来自学生党的求助，缺的都是iostream

## #include "Graph.h"

Edge::Edge()
{
from = -1;
to = -1;
weight = 0;
}

Edge::Edge(int f, int t, int w)
{
from = f;
to = t;
weight = w;
}

Graph::Graph()
{
}

Graph::Graph(int numVert)
{
numVertex = numVert;
numEdge = 0;
Indegree = new int[numVertex];
Mark = new int[numVertex];
for (int i = 0; i < numVertex; i++)
{
Mark[i] = UNVISITED;
Indegree[i] = 0;
}
}

Graph::~Graph()
{
delete[] Mark;
delete[] Indegree;
}

bool Graph::IsEdge(Edge oneEdge)
{
if (oneEdge.weight > 0 && oneEdge.weight < INFINITYS && oneEdge.to >= 0)
return true;
else
return false;
}

void Graph::clearVisitedMark()
{
for (int i = 0; i < numVertex; i++)
Mark[i] = UNVISITED;
}

#pragma once
#include

using namespace std;

#define MAX 102
#define INFINITYS 65536
#define UNVISITED 0
#define VISITED 1

#ifndef GRAPH_H
#define GRAPH_H

class Edge
{
public:
Edge();
Edge(int f, int t, int w);
~Edge() {}
bool operator < (const Edge &arg) { return (this->weight < arg.weight); }
bool operator == (const Edge &arg) { return (this->weight == arg.weight); }
bool operator > (const Edge &arg) { return (this->weight > arg.weight); }
bool operator <= (const Edge &arg) { return (this->weight <= arg.weight); }
bool operator >= (const Edge &arg) { return (this->weight >= arg.weight); }

``````int from;
int to;
int weight;
``````

};

class Graph
{
public:
Graph();
Graph(int numVert);
virtual ~Graph();
int VerticesNum() { return numVertex; }
int EdgesNum() { return numEdge; }
bool IsEdge(Edge oneEdge);
int FromVertex(Edge oneEdge) { return oneEdge.from; }
int ToVertex(Edge oneEdge) { return oneEdge.to; }
int Weight(Edge oneEdge) { return oneEdge.weight; }
void clearVisitedMark();
/*virtual Edge FirstEdge(int oneVertex) = 0;
virtual Edge NextEdge(Edge preEdge) = 0;
virtual void setEdge(int from, int to, int weight) = 0;
virtual void delEdge(int from, int to) = 0;*/

protected:
int numVertex;
int numEdge;
int * Mark;
int * Indegree;
};

#endif // !GRAPH_H

#include "pch.h"
#include "Graphm.h"

Graphm::Graphm()
{
}

Graphm::~Graphm()
{
for (int i = 0; i < numVertex; i++)
delete[] matrix[i];
delete[] matrix;
}

Edge Graphm::FristEdge(int oneVertex)
{
Edge myEdge;
myEdge.from = oneVertex;
for (int i = 0; i < numVertex; i++)
if (matrix[oneVertex][i] != 0 && matrix[oneVertex][i] < INFINITYS)
{
myEdge.to = i;
myEdge.weight = matrix[oneVertex][i];
break;
}
return myEdge;
}

Edge Graphm::NextEdge(Edge preEdge)
{
Edge myEdge;
myEdge.from = preEdge.from;
if (preEdge.to < numVertex)
for (int i = preEdge.to + 1; i < numVertex; i++)
if (matrix[preEdge.from][i] != 0 && matrix[preEdge.from][i] < INFINITYS)
{
myEdge.to = i;
myEdge.weight = matrix[preEdge.from][i];
break;
}
return myEdge;
}

void Graphm::setEdge(int from, int to, int weight)
{
if (matrix[from][to] <= 0)
{
numEdge++;
Indegree[to]++;
}
matrix[from][to] = weight;
}

void Graphm::delEdge(int from, int to)
{
if (matrix[from][to] > 0)
{
numEdge--;
Indegree[to]--;
}
matrix[from][to] = 0;
}

void Graphm::InitWith2DimArray(int * mat, int row_col)
{
for (int i = 0; i < row_col; i++)
for (int j = 0; j < row_col; j++)
{
cout << *(mat + i * row_col + j) << ", \n";
this->setEdge(i, j, *(mat + i * row_col + j));
}
cout << endl;
}

void Graphm::DFS_ConnectedSubGraph(int n)
{
this->Mark[n] = VISITED;
Visit(n);
for (Edge e = this->FristEdge(n); this->IsEdge(e); e = this->NextEdge(e))
if (this->Mark[this->ToVertex(e)] == UNVISITED)
DFS_ConnectedSubGraph(this->ToVertex(e));
}

void Graphm::BFS_ConnectedSubGraph(int n)
{
queue Q;
Visit(n);
Mark[n] = VISITED;
Q.push(n);
while (! Q.empty())
{
int u = Q.front();
Q.pop();
for(Edge e = FristEdge(u); IsEdge(e); e = NextEdge(e))
if (Mark[ToVertex(e)] == UNVISITED)
{
Visit(ToVertex(e));
Mark[ToVertex(e)] = VISITED;
Q.push(ToVertex(e));
}
}
}

#pragma once
#include "Graph.h"
#include

#ifndef GRAGHM_H
#define GRAGHM_H

class Graphm :
public Graph
{
public:
Graphm();
Graphm(int n) : Graph(n)
{
int i;
matrix = (int **) new int *[numVertex];
for (i = 0; i < numVertex; i++)
matrix[i] = new int[numVertex];
for (i = 0; i < numVertex; i++)
for (int j = 0; j < numVertex; j++)
matrix[i][j] = 0;
}
~Graphm();
Edge FristEdge(int oneVertex);
Edge NextEdge(Edge preEdge);
void setEdge(int from, int to, int weight);
void delEdge(int from, int to);
void InitWith2DimArray(int * mat, int row_col);
void DFS_ConnectedSubGraph(int n);
void BFS_ConnectedSubGraph(int n);
void Visit(int n) { cout << 'n' << n << " \n"; }

//private:
int ** matrix;
};

#endif // !GRAGHM_H

// main.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include
#include "Floyd.h"

const int const vertexesNum = 5;

int matrix1[vertexesNum][vertexesNum] =
{
0 , 8 , INFINITYS, 4 , 3 ,
INFINITYS, 0 , INFINITYS, INFINITYS, 8 ,
6 , 7 , 0 , 10 , 2 ,
INFINITYS, INFINITYS, INFINITYS, 0 , INFINITYS,
5 , 5 , INFINITYS, INFINITYS, 0
};

int BrokerToPassRomour(Graphm & G, Dist ** D);

int main()
{
std::cout << "Hello World!\n";
Graphm mat[vertexesNum];
mat->InitWith2DimArray((int )matrix1, vertexesNum);
cout << endl;
cout << "深度优先周游：\n" << endl;
int i;
for (i = 0; i < vertexesNum; i++)
{
mat->clearVisitedMark();
mat->DFS_ConnectedSubGraph(i);
cout << endl;
}
cout << endl;
cout << "广度优先周游：\n" << endl;
for (i = 0; i < vertexesNum; i++)
{
mat->clearVisitedMark();
mat->BFS_ConnectedSubGraph(i);
cout << endl;
}
cout << endl;
Dist *
floydResult;
createFloydResult(floydResult, vertexesNum);
int startVertex = BrokerToPassRomour(mat[0], floydResult);
cout << "所有顶点间的最短路径：\n" << endl;
printAllDistances(floydResult, vertexesNum);
cout << endl;
for (i = 0; i < vertexesNum; i++)
for (int j = 0; j < vertexesNum; j++)
if (i != j)
printOnePath(floydResult, vertexesNum, i, j);
cout << endl;
deleteFloydResult(floydResult, vertexesNum);
if (startVertex >= 0)
cout << "谣言应从 n \n" << startVertex << " 点开始传播！\n" << endl;
else
cout << "图不连通，问题无解 \n" << endl;
return 0;
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门提示:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件

int BrokerToPassRomour(Graphm & G, Dist ** D)
{
int * max;
max = new int[G.VerticesNum()];
int min = 0;
int pos = 0;
int i = 0;
for (i = 0; i < G.VerticesNum(); i++)
max[i] = -1;
Floyd(G, D);
for (i = 0; i < G.VerticesNum(); i++)
for (int j = 0; j < G.VerticesNum(); j++)
if (D[i][j].length > max[i])
max[i] = D[i][j].length;
min = max[0];
for (i = 1; i < G.VerticesNum(); i++)
if (max[i] < min)
{
min = max[i];
pos = i;
}
if (min == INFINITYS)
{
cout << "此图不连通 \n" << endl;
return -1;
}
return pos;
}

// pch.cpp: 与预编译标头对应的源文件；编译成功所必需的

#include "pch.h"

// 一般情况下，忽略此文件，但如果你使用的是预编译标头，请保留它。

// 入门提示:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件

#ifndef PCH_H
#define PCH_H

// TODO: 添加要在此处预编译的标头

#endif //PCH_H

#include "pch.h"
#include "Floyd.h"

void createFloydResult(Dist **& D, int vertexesNum)
{
D = new Dist *[vertexesNum];
for (int i = 0; i < vertexesNum; i++)
D[i] = new Dist[vertexesNum];
}

void deleteFloydResult(Dist **& D, int vertexesNum)
{
for (int i = 0; i < vertexesNum; i++)
delete[] D[i];
delete[] D;
D = NULL;
}

void printAllDistances(Dist ** D, int vertexesNum)
{
for (int i = 0; i < vertexesNum; i++)
{
for (int j = 0; j < vertexesNum; j++)
cout << D[i][j].length << " , \n";
cout << endl;
}
}

void printOnePath(Dist ** D, int vertexesNum, int start, int end)
{
if (D[start][end].length == INFINITYS)
return;
int * path = new int[vertexesNum];
int vertexCount = 0;
int tail = end;
while (tail != start)
{
path[vertexCount++] = D[start][tail].pre;
tail = D[start][tail].pre;
}
cout << "n" << start << "->n" << end << " : ";
for (int i = vertexCount - 1; i >= 0; i--)
cout << "n" << path[i] << "->";
cout << "n" << end << endl;
delete[] path;
}

void Floyd(Graphm & G, Dist ** D)
{
int i, j, v;
D = new Dist *[G.VerticesNum()];
for (i = 0; i < G.VerticesNum(); i++)
D[i] = new Dist[G.VerticesNum()];
for (i = 0; i < G.VerticesNum(); i++)
for (j = 0; j < G.VerticesNum(); j++)
{
if (i == j)
{
D[i][j].length = 0;
D[i][j].pre = i;
}
else
{
D[i][j].length = INFINITYS;
D[i][j].pre = -1;
}
}
for (i = 0; i < G.VerticesNum(); i++)
for (Edge e = G.FristEdge(i); G.IsEdge(e); e = G.NextEdge(e))
{
D[i][G.ToVertex(e)].length = G.Weight(e);
D[i][G.ToVertex(e)].pre = i;
}
for (v = 0; v < G.VerticesNum(); v++)
for (i = 0; i < G.VerticesNum(); i++)
for (j = 0; j < G.VerticesNum(); j++)
if (D[i][j].length > (D[i][v].length + D[v][j].length))
{
D[i][j].length = D[i][v].length + D[v][j].length;
D[i][j].pre = D[v][j].pre;
}
}

#pragma once
#include "Graphm.h"

#ifndef FLOYD_H
#define FLOYD_H

class Dist
{
public:
Dist() {}
~Dist() {}

``````int index;
int length;
int pre;

bool operator < (const Dist &arg)  { return (length < arg.length); }
bool operator == (const Dist &arg) { return (length == arg.length); }
bool operator > (const Dist &arg)  { return (length > arg.length); }
bool operator <= (const Dist &arg) { return (length <= arg.length); }
bool operator >= (const Dist &arg) { return (length >= arg.length); }
``````

};

void createFloydResult(Dist ** &D, int vertexesNum);
void deleteFloydResult(Dist ** &D, int vertexesNum);
void printAllDistances(Dist ** D, int vertexesNum);
void printOnePath(Dist ** D, int vertexesNum, int start, int end);

void Floyd(Graphm &G, Dist ** D);

#endif // !FLOYD_H

"Graphm.cpp":
#include "pch.h"
#include "Graphm.h"

Graphm::Graphm()
{
}

Graphm::~Graphm()
{
for (int i = 0; i < numVertex; i++)
delete[] matrix[i];
delete[] matrix;
}

Edge Graphm::FristEdge(int oneVertex)
{
Edge myEdge;
myEdge.from = oneVertex;
for (int i = 0; i < numVertex; i++)
if (matrix[oneVertex][i] != 0 && matrix[oneVertex][i] < INFINITYS)
{
myEdge.to = i;
myEdge.weight = matrix[oneVertex][i];
break;
}
return myEdge;
}

Edge Graphm::NextEdge(Edge preEdge)
{
Edge myEdge;
myEdge.from = preEdge.from;
if (preEdge.to < numVertex)
for (int i = preEdge.to + 1; i < numVertex; i++)
if (matrix[preEdge.from][i] != 0 && matrix[preEdge.from][i] < INFINITYS)
{
myEdge.to = i;
myEdge.weight = matrix[preEdge.from][i];
break;
}
return myEdge;
}

void Graphm::setEdge(int from, int to, int weight)
{
if (matrix[from][to] <= 0)
{
numEdge++;
Indegree[to]++;
}
matrix[from][to] = weight;
}

void Graphm::delEdge(int from, int to)
{
if (matrix[from][to] > 0)
{
numEdge--;
Indegree[to]--;
}
matrix[from][to] = 0;
}

void Graphm::InitWith2DimArray(int * mat, int row_col)
{
for (int i = 0; i < row_col; i++)
for (int j = 0; j < row_col; j++)
{
cout << *(mat + i * row_col + j) << ", \n";
this->setEdge(i, j, *(mat + i * row_col + j));
}
cout << endl;
}

void Graphm::DFS_ConnectedSubGraph(int n)
{
this->Mark[n] = VISITED;
Visit(n);
for (Edge e = this->FristEdge(n); this->IsEdge(e); e = this->NextEdge(e))
if (this->Mark[this->ToVertex(e)] == UNVISITED)
DFS_ConnectedSubGraph(this->ToVertex(e));
}

void Graphm::BFS_ConnectedSubGraph(int n)
{
queue Q;
Visit(n);
Mark[n] = VISITED;
Q.push(n);
while (! Q.empty())
{
int u = Q.front();
Q.pop();
for(Edge e = FristEdge(u); IsEdge(e); e = NextEdge(e))
if (Mark[ToVertex(e)] == UNVISITED)
{
Visit(ToVertex(e));
Mark[ToVertex(e)] = VISITED;
Q.push(ToVertex(e));
}
}
}

if (matrix[from][to] <= 0)
//void Graphm::setEdge(int from, int to, int weight)

this->matrix 是 0xCDDDCDDE

1个回答

#include"stdio.h" typedef struct tree { char element; struct tree *leftchild, *rightchild; }Tree; Tree* malloc2(void)//为新节点申请动态空间 { Tree* p; p = (Tree*)malloc(sizeof(Tree)); /*if (IS_FULL(p)) { fprintf(stderr, "The memery is full\n"); exit(1); }*/ return p; } void linkchild(Tree *Bt, char element, Tree *lchild, Tree *rchild)//给树连接孩子 { Tree* p = malloc2();//为p申请动态空间 p->leftchild = lchild; p->rightchild = rchild; p->element = element; lchild = rchild = NULL; Bt = p; } void BreakBTree(Tree *Bt, char *element, Tree *lchild, Tree *rchild)//释放Bt的空间 { if (Bt) { *element = Bt->element; lchild = Bt->leftchild; rchild = Bt->rightchild; Bt = NULL; free(Bt); } } void visit(Tree* Bt) //打印节点元素 { if (Bt) printf("%c", Bt->element); } void Fvisit(Tree *Bt) //先序遍历 { if (Bt) { visit(Bt); Fvisit(Bt->leftchild); Fvisit(Bt->rightchild); } } void Mvisit(Tree *Bt) //中序遍历 { if (Bt) { Mvisit(Bt->leftchild); visit(Bt); Mvisit(Bt->rightchild); } } void Lvisit(Tree *Bt) //中序遍历 { if (Bt) { Lvisit(Bt->leftchild); Lvisit(Bt); Lvisit(Bt->rightchild); } } void main() { Tree a, x, y, z; linkchild(&x, 'E', &a, &a); linkchild(&y, 'F', &a, &a); linkchild(&z, 'C', &x, &y); linkchild(&y, 'D', &a, &a); linkchild(&x, 'B', &y, &z); Fvisit(&x); while (1) { } }
0x00007FFBEB0C0624 (vtkCommonCore-7.1.dll) (pclvisualizer.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突？
QMouseEvent *event 运行时显示：引发了异常: 读取访问权限冲突。 **event** 是 nullptr。

【cocos2dx】引发了异常: 读取访问权限冲突。 this 是 0x30

0x59E24FE1 (mfc120ud.dll) (MFCApplication1.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x0000002C 时发生访问冲突。 光标一直停在atlsimpstr.h的 CStringData* GetData() const throw() { return( reinterpret_cast< CStringData* >( m_pszData )-1 ); } 这里，实在不知道是哪里出了问题，求救！！
0x01291dd6 处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突
void results(CvSeq* conto,IplImage *pContour) { for (int i=0;i<conto->total;i++) { CvPoint* p=(CvPoint*)cvGetSeqElem(conto,i); cout<<"("<<p->x<<","<<p->y<<")"<<endl; } } 出现异常cvContour.exe 中的 0x01291dd6 处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突，该怎么解决噢

vs2017，c++ mfc 项目，调试中出现这个错误 引发了异常: 读取访问权限冲突。 this->**** 是 0x406C6A7F。 ``` bool _Endwrite() { // put shift to initial conversion state, as needed if (_Pcvt == nullptr || !_Wrotesome) { return (true); } // may have to put if (_Traits::eq_int_type(_Traits::eof(), overflow())) -----------这个地方 { return (false); } ``` 这个是我自己写的部分 ``` void CMFCApplication2Dlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CString filename; //打开文件 GetDlgItemText(IDC_OPEN_EDIT, filename); ifstream myfile; myfile.open("D:\\学习资料\\4毕业设计\\one.txt", ios::in); if (!myfile.is_open()) { MessageBox(NULL, TEXT("failed!")); system("pause"); exit(1); KillTimer(1); } float data[71][24] = { 0 }; vector<string> vec; string temp; while (getline(myfile, temp)) //利用getline（）读取每一行，并按照行为单位放入到vector { vec.push_back(temp); } vector <float> radius; int j = 0; //cout << "读入的数据为 " << endl; for (auto it = vec.begin(); it != vec.end(); it++) //第一行到最后一行 { cout << *it << endl; istringstream is(*it); //用每一行的数据初始化一个字符串输入流； string s; for (size_t i = 0; i < 3; i++) { is >> s; //文字部分 } for (size_t i = 0; i < 23; i++) { is >> s; data[j][i] = atof(s.c_str()); cout << data[j][i] << endl; } if (j < 72) { j++; } else { j = 0; } myfile.close(); CDialogEx::OnTimer(nIDEvent); } ``` 重装了vs也没法解决。希望各位大大指点一下。
c++链表 引发了异常: 读取访问权限冲突。 temp 是 0xCDCDCDCD。

0x59EC4A40 (mfc110d.dll) (OLYONE.exe 中)处有未经处理的异常:
0x59EC4A40 (mfc110d.dll) (OLYONE.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0xCCCCCCCC 时发生访问冲突。

.exe 中的 0x11 处有未经处理的异常: : 读取位置 0x00000a10 时发生访问冲突

![图片说明](https://img-ask.csdn.net/upload/201801/31/1517385291_976996.png) 运行一个最最简单的程序： #include <opencv2/opencv.hpp> using namespace cv; void main() { Mat srcImage = imread("D:\VS2013\tp\1.jpg"); imshow("【原始图】", srcImage); waitKey(0); } 就会出现： 0x0F0EAD76 (opencv_highgui330d.dll) (ConsoleApplication1.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突。 试了好多种方法都不行，昨天还可以，今天就这样了 ，求大神指导该怎么办
Mfc处有未经处理的异常，希望大佬指教

VS2010中编写YUV播放器编译时显示未经处理的异常: 0xC0000005

【JSON解析】浅谈JSONObject的使用

《MySQL 性能优化》之理解 MySQL 体系结构

【前言】 　　收到一封来信，赶上各种事情拖了几日，利用今天要放下工作的时机，做个回复。 　　2020年到了，就以这一封信，作为开年标志吧。 【正文】 　　您好，我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。 　　先说一下我的基本情况，高考失利，不想复读，来到广州一所大专读计算机应用技术专业。学校是偏艺术类的，计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...

Java 14 都快来了，为什么还有这么多人固守Java 8？

【CSDN编者按】1月2日，阿里巴巴发布《达摩院2020十大科技趋势》，十大科技趋势分别是：人工智能从感知智能向认知智能演进；计算存储一体化突破AI算力瓶颈；工业互联网的超融合；机器间大规模协作成为可能；模块化降低芯片设计门槛；规模化生产级区块链应用将走入大众；量子计算进入攻坚期；新材料推动半导体器件革新；保护数据隐私的AI技术将加速落地；云成为IT技术创新的中心 。 新的画卷，正在徐徐展开。...

Python+OpenCV实时图像处理

2020年一线城市程序员工资大调查

python爬取百部电影数据，我分析出了一个残酷的真相
2019年就这么匆匆过去了，就在前几天国家电影局发布了2019年中国电影市场数据，数据显示去年总票房为642.66亿元，同比增长5.4%；国产电影总票房411.75亿元，同比增长8.65%，市场占比 64.07%；城市院线观影人次17.27亿，同比增长0.64%。 看上去似乎是一片大好对不对？不过作为一名严谨求实的数据分析师，我从官方数据中看出了一点端倪：国产票房增幅都已经高达8.65%了，为什...

Windows可谓是大多数人的生产力工具，集娱乐办公于一体，虽然在程序员这个群体中都说苹果是信仰，但是大部分不都是从Windows过来的，而且现在依然有很多的程序员用Windows。 所以，今天我就把我私藏的Windows必装的软件分享给大家，如果有一个你没有用过甚至没有听过，那你就赚了????，这可都是提升你幸福感的高效率生产力工具哦！ 走起！???? NO、1 ScreenToGif 屏幕，摄像头和白板...

AI 没让人类失业，搞 AI 的人先失业了

2020年，冯唐49岁：我给20、30岁IT职场年轻人的建议

B站是个宝，谁用谁知道???? 作为一名大学生，你必须掌握的一项能力就是自学能力，很多看起来很牛X的人，你可以了解下，人家私底下一定是花大量的时间自学的，你可能会说，我也想学习啊，可是嘞，该学习啥嘞，不怕告诉你，互联网时代，最不缺的就是学习资源，最宝贵的是啥？ 你可能会说是时间，不，不是时间，而是你的注意力，懂了吧！ 那么，你说学习资源多，我咋不知道，那今天我就告诉你一个你必须知道的学习的地方，人称...