gpt4 book ai didi

c++ - 当我通过 const 引用传递 vector 时,为什么会出现此转换错误?

转载 作者:行者123 更新时间:2023-11-28 06:11:02 24 4
gpt4 key购买 nike

<分区>

这是一个打印出 std::vector 的条款的简短程序目的。 vector 本身作为 const 传入效率引用。

#include <iostream>
#include <vector>

using std::vector;
using std::cout;
using std::endl;

void print_all_terms(const std::vector<int>&);

int main()
{
std::vector<int> sequence_1(4, 100);

print_all_terms(sequence_1);

return(0);
}

void print_all_terms(const std::vector<int>& sequence)
{
for (std::vector<int>::iterator it = sequence.begin() ;
it != sequence.end() ;
++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
}

但是,当我运行程序时,出现错误:

error: conversion from '__gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >' to non-scalar type '__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >' requested

这是由于迭代器it被声明为 std::vector<int>::iterator , 解析为

__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >

begin()函数正在返回类型的对象

__gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >

唯一的区别是 const在第二个。但我不明白为什么 const应该在那里 - 是的,变量 sequence作为常量引用传入,但它是一个 const 的引用,而不是序列本身。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com