请教一个C++问题,具体描述看补充,谢谢!

1、在C++中,向量如何赋予数组当做数组的值;2、一道题来的:定义数组a[5](自行给定初值),找出最大值;这道题麻烦给出注释,谢谢!... 1、在C++中,向量如何赋予数组当做数组的值;

2、一道题来的:定义数组a[5](自行给定初值),找出最大值;这道题麻烦给出注释,谢谢!
展开
 我来答
天和挣月
2015-03-29 · 超过14用户采纳过TA的回答
知道答主
回答量:51
采纳率:100%
帮助的人:26.4万
展开全部
int a[5]={2,3,1,4,6};
int i=0;//初始化i做循环变量使用
int val=0;//定义变量val用来接收最大值
for(i=0;i<5;i++){
if(a[i]<a[i+1}){
val=a[i+1];

}
else {val=a[i];}//进行循环比较,每次都把较大的数给val,循环结束后val的值就是最大值
更多追问追答
追问
不好意思,如果改了数字,运行结果就不正确了,请问这个程序是不是出了问题?
追答
这个程序时需要中间变量val来进行比较后的交换:val=a[i+1];a[i+1]=a[i];a[i]=val;如果改的话,for循环里i的值要改成控制小于数组的长度。我写的仅仅是部分代码,执行的话需要你自己再写点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
烟子丹0Z
2015-03-29 · 超过21用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:37.3万
展开全部
int main() {
    vector<int> vec {1,2,3,4};
    int arr[4];
    auto vecp = vec.cbegin();
    for (int *p = arr; p != &arr[4]; ++p) {
        *p = *vecp++;
    }

int main() {
    int a[5] {1,2,3,4,5}    //c++11 列表初始化
    int largest = a[0];
    for (const auto &number : a) {
        if (number > largest)
            largest = number;     //迭代寻找最大值
     } 
    return 0; 
}
追问
请问vector是把向量的赋给数组作为它的值的意思吗? *p 代表的意思是什么?还有const auto 语句的作用是什么?我是初学者,有点看不懂,谢谢!
追答
  第一段程序中,通过定义指向vector首元素的迭代器来实现一边遍历数组,一边为其赋值,一边递增迭代器。

  int *p声明了一个int指针,并指向了数组的首元素。因为在大多数情况下(比如decltype除外)数组名称等同于它首元素的内存地址,故该声明还能写成 int *p = &arr[0] 这样也许更好理解。当该指针的内存地址变化到arr[4]的内存地址时停止执行。

  const auto &number :a 是c++11的新特性。因为不需要改变number的值,所以最好把它变为底层const,即修饰number的const。auto是自动识别类型(c++11新特性),引用即是因为避免重复赋值。for (const auto &number : a)的作用是遍历a的元素,并把每次变化得到的元素附给number(或让number成为其引用)。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式