关于指针,菜鸟家的表述比较清晰了【https://www.runoob.com/cplusplus/cpp-pointers.html】
链表: 转载自【http://c.biancheng.net/view/1570.html】 还没太懂:
因为指向链表头的指针用于定位链表的头部,所以也可以认为它代表了链表头。同样的指针也可以用来定位整个链表,从头开始,后面跟着后续指针,所以也可以很自然地把它看作是代表了整个链表。 这个看起来很实用! 给到的一个实例程序,需要常看常新:
#include <iostream>
#include <fstream>
using namespace std;
struct ListNode
{
double value;
ListNode *next;
ListNode(double value1, ListNode *next1 = nullptr)
{
value = value1; next = next1;
}
};
int main()
{
double number;
ListNode *numberList = nullptr;
ifstream numberFile("numberFile?dat");
if (!numberFile)
{
cout << "Error in opening the file of numbers.";
exit (1);
}
cout << "The contents of the file are: " << endl;
while (numberFile >> number)
{
cout << number << " ";
numberList = new ListNode(number, numberList);
}
cout << endl << "The contents of the list are: " << endl;
ListNode *ptr = numberList;
while (ptr != nullptr)
{
cout << ptr->value << " ";
ptr = ptr->next;
}
return 0;
}
类似的原理&题目思路解释见【https://blog.csdn.net/weixin_39538889/article/details/85801412】,眼睛痛还没看
更新:关于 find() / end()
【这个讲的赞!】《undered_map的用法总结》【https://www.cnblogs.com/xuelisheng/p/10771961.html】 unordered_map的迭代器是一个指针,指向这个元素,通过迭代器来取得它的值。 它的键、值分别是迭代器的first和second属性。
1 it->first;
2 it->second;
.find() / end():返回的都是元素的迭代器(键+值)。 find()如果没找到:返回unordered_map::end。 括号内的参数是键key,但一般是“重要的信息”设成key,序号设为第二个值value。 例如【https://www.cnblogs.com/xuelisheng/p/10771961.html】中的示例代码:
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
map<string, int> dict;
dict.insert(pair<string, int>("apple", 2));
dict.insert(map<string, int>::value_type("orange", 3));
dict["banana"] = 6;
if (dict.empty())
cout << "该字典无元素" << endl;
else
cout << "该字典共有" << dict.size() << "个元素" << endl;
map<string, int>::iterator iter;
for (iter = dict.begin(); iter != dict.end(); iter++)
cout << iter->first << ends << iter->second << endl;
if ((iter = dict.find("banana")) != dict.end())
cout << "已找到banana,其value为" << iter->second << "." << endl;
else
cout << "未找到banana." << endl;
if (dict.count("watermelon") == 0)
cout << "watermelon不存在" << endl;
else
cout << "watermelon存在" << endl;
pair<map<string, int>::iterator, map<string, int>::iterator> ret;
ret = dict.equal_range("banana");
cout << ret.first->first << ends << ret.first->second << endl;
cout << ret.second->first << ends << ret.second->second << endl;
iter = dict.lower_bound("boluo");
cout << iter->first << endl;
iter = dict.upper_bound("boluo");
cout << iter->first << endl;
return 0;
}
其结果为:
该字典共有3个元素
apple2
banana6
orange3
已找到banana,其value为6.
watermelon不存在
banana6
orange3
orange
orange
auto
在C++11标准的语法中,auto被定义为自动推断变量的类型。 不过C++11的auto必须给申明的变量赋予一个初始值,否则会报错。
|