Difference between begin and cbegin

what is the difference between the begin and the cbegin iterator in list class… i didnt understand what is meant by the line that it points to a const value in the list

what is the concept of constant iterators

begin() returns the iterator to beginning while cbegin() returns const_iterator to beginning. Basic difference between these two is iterator (i.e begin()) lets you change the value of object it is pointing to and const_iterator will not let you change the value of the object.

For example:

vector<int> v{10,20,30,40,50};
vector<int> :: iterator it;

for(it = v.begin(); it != v.end(); it++)
{
*it = *it - 10;
}

This is allowed. Vector Values changes to {0,10,20,30,40}

for(it = v.cbegin();it != v.cend();it++)
{
 *it = *it -10;
}

This is not allowed. It will throw error.

then what is the usage of constant iterators and how will this cbegin function be used… pls give an example

They are just used when you don;t want to change their value, but just use their value.
Check this link maybe https://www.geeksforgeeks.org/const-vs-regular-iterators-in-c-with-examples/