C++新标准文档解读与更新要点

版权申诉
0 下载量 176 浏览量 更新于2024-10-26 收藏 6.8MB RAR 举报
资源摘要信息:"The New C Standard: C++11" C++作为一门高级编程语言,一直在不断演进,以适应软件开发领域的新需求和新挑战。在C++的发展历程中,C++11是一个重要的里程碑。它的出现,标志着C++标准的一次显著的更新,为C++语言引入了大量的新特性和改进,从而极大地增强了该语言的功能性和表现力。 在标题中提到的"The New C Standard"和描述中的"The New C Standard.rar"都指代了C++11标准文档。这表明文件中包含的内容很有可能是关于C++11标准的详细规范或介绍资料。而标签"c++_standard new"则明确表明了这是一个关于C++新标准(即C++11)的资源。由于文件列表中只有一个名为"cbook1_2.pdf"的文件,我们可以推测,这个PDF文档可能是对C++11标准进行解读或详细说明的手册或教程。 C++11标准中引入的新特性非常多,以下是一些显著的知识点: 1. **Auto类型推导**:C++11允许使用auto关键字来自动推导变量的类型,这在使用复杂的泛型容器时尤其有用。 2. **范围for循环**:引入了基于范围的for循环(range-based for loop),简化了对容器的遍历。 3. **初始化列表**:允许用花括号初始化容器和数组,提高了代码的可读性和简洁性。 4. **Lambda表达式**:C++11支持lambda表达式,使得创建匿名函数变得更加简单和方便。 5. **智能指针**:引入了多个智能指针(如unique_ptr, shared_ptr, weak_ptr等),加强了内存管理,减少了内存泄漏的风险。 6. **移动语义**:C++11通过移动构造函数和移动赋值运算符,优化了资源的转移,提高了资源使用效率。 7. **并发编程**:新增了std::thread, std::mutex等并发编程的库组件,使得多线程编程更加容易。 8. **类型别名**:使用using关键字可以定义类型别名,简化了复杂类型的声明。 9. **新算法**:C++11增加了许多新的算法,例如std::all_of, std::any_of, std::none_of等,提供了更加强大的算法库。 10. **属性**:提供了__attribute__和[[deprecated]]等属性,以支持对实体的额外信息标记。 11. **变参模板**:允许模板函数和类模板接受任意数量和任意类型的参数。 12. **非成员begin和end函数**:为了与初始化列表更好的协作,C++11提供了非成员的begin和end函数,用以获取容器的起始和结束迭代器。 了解和掌握这些新特性,对于C++程序员来说是至关重要的,因为它们不仅使代码更加简洁,还有助于提升开发效率和软件质量。此外,对于程序员来说,跟上C++标准的更新同样重要,因为这意味着能够充分利用语言提供的最新工具和最佳实践。 对于追求技术深度和广度的开发者,阅读"cbook1_2.pdf"文件将能够帮助他们深入理解C++11标准,并将其运用到实际的编程工作中。文件的标题和描述信息都暗示了这是一份与C++11新标准相关的重要文档,而标签信息则进一步明确指出了资源的性质。对于希望提升C++编程技能的个人,这份资源无疑是一份宝贵的财富。
2023-06-06 上传

import numpy as np import pandas as pd from scipy.stats import kstest #from sklearn import preprocessing # get a column from dataframe def select_data(data, ny): yName = data.columns[ny] Y = data[yName] return Y # see which feature is normally distributed from dataframe def normal_test(df): for i in range(len(df.columns)): y = select_data(df,i) p = kstest(y,'norm') print("feature {}, p-value = {}".format(i,p[1])) # rescale feature i in dataframe def standard_rescale(df, i): y = select_data(df,i) m = np.mean(y) s = np.std(y) y = (y-m)/s return y # log-transform feature of dataframe def log_transform(df,i): y = select_data(df,i) y = np.log(y) return y # square root transform feature of dataframe def sqrt_transform(df,i): y = select_data(df,i) y = np.sqrt(y) return y # cube root transform feature of dataframe def cbrt_transform(df,i): y = select_data(df,i) y = np.cbrt(y) return y # transform dataframe into one of: standard, log, sqrt, cbrt def transform_dataframe(df, transformation): df_new = [] if transformation == "standard": for i in range(len(df.columns)-1): y = standard_rescale(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "log": for i in range(len(df.columns)-1): y = log_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "sqrt": for i in range(len(df.columns)-1): y = sqrt_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) elif transformation == "cbrt": for i in range(len(df.columns)-1): y = cbrt_transform(df,i) df_new.append(y) df_new.append(df.iloc[:,no_feats]) else: return "wrong arguments" df_new = pd.DataFrame(df_new) df_new = df_new.T return df_new df = pd.read_csv('iris.csv') no_feats = 4 df.columns =['0', '1', '2', '3', '4'] #normal_test(df) df_standard = transform_dataframe(df, "standard") #df_log = transform_dataframe(df, "log") #df_sqrt = transform_dataframe(df, "sqrt") #df_cbrt = transform_dataframe(df, "cbrt") #df_wrong = transform_dataframe(df, "lo") #print("standard-----------------------------------------") #normal_test(df_standard) #print("log-----------------------------------------") #normal_test(df_log) #print("square root-----------------------------------------") #normal_test(df_sqrt) #print("cube root-----------------------------------------") #normal_test(df_cbrt) result = df_standard # create new csv file with new dataframe result.to_csv(r'iris_std.csv', index = False, header=True)解释每一行代码

2023-06-11 上传